{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "/home/filipe/.virtualenvs/iris/lib/python2.7/site-packages/folium/__init__.py\n",
      "0.2.0\n"
     ]
    }
   ],
   "source": [
    "import folium\n",
    "\n",
    "print(folium.__file__)\n",
    "print(folium.__version__)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1 track(s)\n",
      "1 segment(s)\n",
      "1027 point(s)\n"
     ]
    }
   ],
   "source": [
    "import gpxpy\n",
    "gpx = gpxpy.parse(open('/home/filipe/Dropbox/GPX/2014_08_05_farol.gpx'))\n",
    "\n",
    "print(\"{} track(s)\".format(len(gpx.tracks)))\n",
    "track = gpx.tracks[0]\n",
    "\n",
    "print(\"{} segment(s)\".format(len(track.segments)))\n",
    "segment = track.segments[0]\n",
    "\n",
    "print(\"{} point(s)\".format(len(segment.points)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Longitude</th>\n",
       "      <th>Latitude</th>\n",
       "      <th>Altitude</th>\n",
       "      <th>Time</th>\n",
       "      <th>Speed</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-38.502595</td>\n",
       "      <td>-13.005390</td>\n",
       "      <td>10.9</td>\n",
       "      <td>2014-08-05 17:52:49.330</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-38.502605</td>\n",
       "      <td>-13.005415</td>\n",
       "      <td>11.8</td>\n",
       "      <td>2014-08-05 17:52:49.770</td>\n",
       "      <td>2.672951</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-38.502575</td>\n",
       "      <td>-13.005507</td>\n",
       "      <td>11.7</td>\n",
       "      <td>2014-08-05 17:52:54.730</td>\n",
       "      <td>3.059732</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-38.502545</td>\n",
       "      <td>-13.005595</td>\n",
       "      <td>11.6</td>\n",
       "      <td>2014-08-05 17:52:57.750</td>\n",
       "      <td>4.220779</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-38.502515</td>\n",
       "      <td>-13.005680</td>\n",
       "      <td>11.4</td>\n",
       "      <td>2014-08-05 17:53:00.720</td>\n",
       "      <td>3.939967</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Longitude   Latitude  Altitude                    Time     Speed\n",
       "0 -38.502595 -13.005390      10.9 2014-08-05 17:52:49.330       NaN\n",
       "1 -38.502605 -13.005415      11.8 2014-08-05 17:52:49.770  2.672951\n",
       "2 -38.502575 -13.005507      11.7 2014-08-05 17:52:54.730  3.059732\n",
       "3 -38.502545 -13.005595      11.6 2014-08-05 17:52:57.750  4.220779\n",
       "4 -38.502515 -13.005680      11.4 2014-08-05 17:53:00.720  3.939967"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = []\n",
    "segment_length = segment.length_3d()\n",
    "for point_idx, point in enumerate(segment.points):\n",
    "    data.append([point.longitude, point.latitude,\n",
    "                 point.elevation, point.time, segment.get_speed(point_idx)])\n",
    "    \n",
    "from pandas import DataFrame\n",
    "\n",
    "columns = ['Longitude', 'Latitude', 'Altitude', 'Time', 'Speed']\n",
    "df = DataFrame(data, columns=columns)\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import seawater as sw\n",
    "from oceans.ff_tools import smoo1\n",
    "\n",
    "_, angles = sw.dist(df['Latitude'], df['Longitude'])\n",
    "angles = np.r_[0, np.deg2rad(angles)]\n",
    "\n",
    "# Normalize the speed to use as the length of the arrows.\n",
    "r = df['Speed'] / df['Speed'].max()\n",
    "kw = dict(window_len=31, window='hanning')\n",
    "df['u'] = smoo1(r * np.cos(angles), **kw)\n",
    "df['v'] = smoo1(r * np.sin(angles), **kw)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import mplleaflet\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "df = df.dropna()\n",
    "\n",
    "# This style was lost below.\n",
    "ax.plot(df['Longitude'], df['Latitude'],\n",
    "        color='darkorange', linewidth=5, alpha=0.5)\n",
    "\n",
    "# This is preserved in the SVG icon.\n",
    "sub = 10\n",
    "kw = dict(color='deepskyblue', alpha=0.8, scale=10)\n",
    "ax.quiver(df['Longitude'][::sub],\n",
    "          df['Latitude'][::sub],\n",
    "          df['u'][::sub],\n",
    "          df['v'][::sub], **kw)\n",
    "\n",
    "gj = mplleaflet.fig_to_geojson(fig=fig)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;base64,CiAgICAgICAgPCFET0NUWVBFIGh0bWw+CiAgICAgICAgPGhlYWQ+CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgLz4KICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0LzAuNy4zL2xlYWZsZXQuanMiPjwvc2NyaXB0PgogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvanF1ZXJ5LzEuMTEuMS9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4KICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIDxzY3JpcHQgc3JjPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9qcy9ib290c3RyYXAubWluLmpzIj48L3NjcmlwdD4KICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3Jhd2dpdGh1Yi5jb20vbHZvb2dkdC9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAvZGV2ZWxvcC9kaXN0L2xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLmpzIj48L3NjcmlwdD4KICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIvMC40LjAvbGVhZmxldC5tYXJrZXJjbHVzdGVyLXNyYy5qcyI+PC9zY3JpcHQ+CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5tYXJrZXJjbHVzdGVyLzAuNC4wL2xlYWZsZXQubWFya2VyY2x1c3Rlci5qcyI+PC9zY3JpcHQ+CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2xlYWZsZXQvMC43LjMvbGVhZmxldC5jc3MiIC8+CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMi4wL2Nzcy9ib290c3RyYXAubWluLmNzcyIgLz4KICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIiAvPgogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS80LjEuMC9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIC8+CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vcmF3Z2l0LmNvbS9sdm9vZ2R0L0xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLzIuMC9kZXZlbG9wL2Rpc3QvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuY3NzIiAvPgogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIvMC40LjAvTWFya2VyQ2x1c3Rlci5EZWZhdWx0LmNzcyIgLz4KICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5tYXJrZXJjbHVzdGVyLzAuNC4wL01hcmtlckNsdXN0ZXIuY3NzIiAvPgogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcHl0aG9uLXZpc3VhbGl6YXRpb24vZm9saXVtL21hc3Rlci9mb2xpdW0vdGVtcGxhdGVzL2xlYWZsZXQuYXdlc29tZS5yb3RhdGUuY3NzIiAvPgogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgPHN0eWxlPgoKICAgICAgICAgICAgaHRtbCwgYm9keSB7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAjbWFwIHsKICAgICAgICAgICAgICAgIHBvc2l0aW9uOmFic29sdXRlOwogICAgICAgICAgICAgICAgdG9wOjA7CiAgICAgICAgICAgICAgICBib3R0b206MDsKICAgICAgICAgICAgICAgIHJpZ2h0OjA7CiAgICAgICAgICAgICAgICBsZWZ0OjA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgPHN0eWxlPiAjbWFwX2JhYWU4ZWY0MDlkZjRhM2E4NDllNDA0OWNhZDI4MWZhIHsKICAgICAgICAgICAgICAgIHBvc2l0aW9uIDogcmVsYXRpdmU7CiAgICAgICAgICAgICAgICB3aWR0aCA6IDEwMC4wJTsKICAgICAgICAgICAgICAgIGhlaWdodDogMTAwLjAlOwogICAgICAgICAgICAgICAgbGVmdDogMC4wJTsKICAgICAgICAgICAgICAgIHRvcDogMC4wJTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgPC9zdHlsZT4KICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICA8L2hlYWQ+CiAgICAgICAgPGJvZHk+CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9saXVtLW1hcCIgaWQ9Im1hcF9iYWFlOGVmNDA5ZGY0YTNhODQ5ZTQwNDljYWQyODFmYSIgPjwvZGl2PgogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIDwvYm9keT4KICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgc291dGhXZXN0ID0gTC5sYXRMbmcoLTkwLCAtMTgwKTsKICAgICAgICAgICAgdmFyIG5vcnRoRWFzdCA9IEwubGF0TG5nKDkwLCAxODApOwogICAgICAgICAgICB2YXIgYm91bmRzID0gTC5sYXRMbmdCb3VuZHMoc291dGhXZXN0LCBub3J0aEVhc3QpOwoKICAgICAgICAgICAgdmFyIG1hcF9iYWFlOGVmNDA5ZGY0YTNhODQ5ZTQwNDljYWQyODFmYSA9IEwubWFwKCdtYXBfYmFhZThlZjQwOWRmNGEzYTg0OWU0MDQ5Y2FkMjgxZmEnLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXI6Wy0xMy4wMDg2ODA1MSwtMzguNTEzODYwOTddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogMTQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfN2Q3YTliOTZhNDRlNDhiODlmZGU0OWRlYWU0ZTc5MDMgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL2NhcnRvZGItYmFzZW1hcHMte3N9Lmdsb2JhbC5zc2wuZmFzdGx5Lm5ldC9saWdodF9hbGwve3p9L3t4fS97eX0ucG5nJywKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBtYXhab29tOiAxOCwKICAgICAgICAgICAgICAgICAgICBtaW5ab29tOiAxLAogICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0aW9uOiAnKGMpIDxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvY29weXJpZ2h0Ij5PcGVuU3RyZWV0TWFwPC9hPiBjb250cmlidXRvcnMgKGMpIDxhIGhyZWY9Imh0dHA6Ly9jYXJ0b2RiLmNvbS9hdHRyaWJ1dGlvbnMiPkNhcnRvREI8L2E+LCBDYXJ0b0RCIDxhIGhyZWYgPSJodHRwOi8vY2FydG9kYi5jb20vYXR0cmlidXRpb25zIj5hdHRyaWJ1dGlvbnM8L2E+JywKICAgICAgICAgICAgICAgICAgICBkZXRlY3RSZXRpbmE6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmFhZThlZjQwOWRmNGEzYTg0OWU0MDQ5Y2FkMjgxZmEpOwoKICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgZ2VvX2pzb25fMmU2ZmM4ODZhM2U2NDY5MjhkMTcwZDAyNWJjOTNkYzYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbLTM4LjUwMTg0NSwgLTEzLjAwNjM5XSwgWy0zOC41MDE3NTgzMzMzMzMzMzUsIC0xMy4wMDY0NF0sIFstMzguNTAxNjgxNjY2NjY2NjcsIC0xMy4wMDY0NzVdLCBbLTM4LjUwMTYxLCAtMTMuMDA2NV0sIFstMzguNTAxNTI4MzMzMzMzMzMsIC0xMy4wMDY1NF0sIFstMzguNTAxNDQ2NjY2NjY2NjY2LCAtMTMuMDA2NTY2NjY2NjY2NjY2XSwgWy0zOC41MDEzNywgLTEzLjAwNjU5XSwgWy0zOC41MDEyOTUsIC0xMy4wMDY2MV0sIFstMzguNTAxMjE2NjY2NjY2NjY0LCAtMTMuMDA2NjJdLCBbLTM4LjUwMTEzMTY2NjY2NjY2NiwgLTEzLjAwNjYzNjY2NjY2NjY2N10sIFstMzguNTAxMDYsIC0xMy4wMDY2NzE2NjY2NjY2NjhdLCBbLTM4LjUwMDk4NSwgLTEzLjAwNjcwNV0sIFstMzguNTAwOSwgLTEzLjAwNjczXSwgWy0zOC41MDA4MDUsIC0xMy4wMDY3MzVdLCBbLTM4LjUwMDczLCAtMTMuMDA2NzQ1XSwgWy0zOC41MDA2NiwgLTEzLjAwNjc2MTY2NjY2NjY2Nl0sIFstMzguNTAwNTg1LCAtMTMuMDA2NzldLCBbLTM4LjUwMDUwNjY2NjY2NjY2NiwgLTEzLjAwNjgyNV0sIFstMzguNTAwNDE2NjY2NjY2NjY2LCAtMTMuMDA2ODUxNjY2NjY2NjY2XSwgWy0zOC41MDAzMywgLTEzLjAwNjg3NV0sIFstMzguNTAwMjM1LCAtMTMuMDA2ODk1XSwgWy0zOC41MDAxNCwgLTEzLjAwNjkzXSwgWy0zOC41MDAwNDUsIC0xMy4wMDY5NDVdLCBbLTM4LjQ5OTk1LCAtMTMuMDA2OTYxNjY2NjY2NjY3XSwgWy0zOC40OTk4NTgzMzMzMzMzMzYsIC0xMy4wMDY5OV0sIFstMzguNDk5Nzc1LCAtMTMuMDA3MDA2NjY2NjY2NjY3XSwgWy0zOC40OTk3LCAtMTMuMDA3MDE4MzMzMzMzMzMzXSwgWy0zOC40OTk2MSwgLTEzLjAwNzAzNV0sIFstMzguNDk5NTI1LCAtMTMuMDA3MDUxNjY2NjY2NjY3XSwgWy0zOC40OTk0NCwgLTEzLjAwNzA3XSwgWy0zOC40OTkzNjY2NjY2NjY2NywgLTEzLjAwNzA4NV0sIFstMzguNDk5Mjk2NjY2NjY2NjY2LCAtMTMuMDA3MTFdLCBbLTM4LjQ5OTIxLCAtMTMuMDA3MTUzMzMzMzMzMzMzXSwgWy0zOC40OTkxNDE2NjY2NjY2NywgLTEzLjAwNzIxXSwgWy0zOC40OTkwNzUsIC0xMy4wMDcyN10sIFstMzguNDk5MDIsIC0xMy4wMDczMl0sIFstMzguNDk4OTU2NjY2NjY2NjY1LCAtMTMuMDA3MzldLCBbLTM4LjQ5ODksIC0xMy4wMDc0NV0sIFstMzguNDk4ODU1LCAtMTMuMDA3NTA1XSwgWy0zOC40OTg4MTUsIC0xMy4wMDc1ODY2NjY2NjY2NjddLCBbLTM4LjQ5ODc3LCAtMTMuMDA3NjU1XSwgWy0zOC40OTg3MTY2NjY2NjY2NywgLTEzLjAwNzczXSwgWy0zOC40OTg2NiwgLTEzLjAwNzgwNjY2NjY2NjY2N10sIFstMzguNDk4NjIsIC0xMy4wMDc4ODVdLCBbLTM4LjQ5ODU4NSwgLTEzLjAwNzk4XSwgWy0zOC40OTg1MzUsIC0xMy4wMDgwNl0sIFstMzguNDk4NDkzMzMzMzMzMzM2LCAtMTMuMDA4MTI1XSwgWy0zOC40OTg0MzUsIC0xMy4wMDgxOV0sIFstMzguNDk4NDEsIC0xMy4wMDgyNjE2NjY2NjY2NjZdLCBbLTM4LjQ5ODM1MTY2NjY2NjY2NSwgLTEzLjAwODMxNV0sIFstMzguNDk4MywgLTEzLjAwODM3NV0sIFstMzguNDk4MjU1LCAtMTMuMDA4NDM1XSwgWy0zOC40OTgyMDUsIC0xMy4wMDg0OTVdLCBbLTM4LjQ5ODE3LCAtMTMuMDA4NTddLCBbLTM4LjQ5ODEyNSwgLTEzLjAwODYzXSwgWy0zOC40OTgwNCwgLTEzLjAwODY2XSwgWy0zOC40OTc5NTUsIC0xMy4wMDg2OTVdLCBbLTM4LjQ5Nzg5NSwgLTEzLjAwODc0XSwgWy0zOC40OTc4MTE2NjY2NjY2NjQsIC0xMy4wMDg3ODVdLCBbLTM4LjQ5Nzc0MTY2NjY2NjY3LCAtMTMuMDA4ODM2NjY2NjY2NjY3XSwgWy0zOC40OTc2OCwgLTEzLjAwODg5NV0sIFstMzguNDk3NTksIC0xMy4wMDg5NF0sIFstMzguNDk3NTE2NjY2NjY2NjcsIC0xMy4wMDg5NzVdLCBbLTM4LjQ5NzQzNSwgLTEzLjAwOTAxXSwgWy0zOC40OTczOCwgLTEzLjAwOTA2NV0sIFstMzguNDk3MzUsIC0xMy4wMDkxNF0sIFstMzguNDk3MzEsIC0xMy4wMDkyMTVdLCBbLTM4LjQ5NzI4LCAtMTMuMDA5Mjk1XSwgWy0zOC40OTcyOCwgLTEzLjAwOTM4XSwgWy0zOC40OTcyNTUsIC0xMy4wMDk0NTVdLCBbLTM4LjQ5NzIzNjY2NjY2NjY2NiwgLTEzLjAwOTUzXSwgWy0zOC40OTcyMTMzMzMzMzMzMzUsIC0xMy4wMDk2MDVdLCBbLTM4LjQ5NzE5LCAtMTMuMDA5NjhdLCBbLTM4LjQ5NzE1LCAtMTMuMDA5NzddLCBbLTM4LjQ5NzEzNSwgLTEzLjAwOTg1XSwgWy0zOC40OTcxMDUsIC0xMy4wMDk5MjVdLCBbLTM4LjQ5NzA4NSwgLTEzLjAxXSwgWy0zOC40OTcwNTUsIC0xMy4wMTAwNjgzMzMzMzMzMzNdLCBbLTM4LjQ5NzAzNSwgLTEzLjAxMDE0XSwgWy0zOC40OTcwMSwgLTEzLjAxMDIxNV0sIFstMzguNDk3MDIsIC0xMy4wMTAyOTVdLCBbLTM4LjQ5NzA0NSwgLTEzLjAxMDM4XSwgWy0zOC40OTcxNSwgLTEzLjAxMDM4NV0sIFstMzguNDk3MjM1LCAtMTMuMDEwMzkzMzMzMzMzMzMzXSwgWy0zOC40OTczMTUsIC0xMy4wMTA0MV0sIFstMzguNDk3NDEsIC0xMy4wMTA0Ml0sIFstMzguNDk3NDk1LCAtMTMuMDEwNDQ1XSwgWy0zOC40OTc1OSwgLTEzLjAxMDQ3NV0sIFstMzguNDk3NjgxNjY2NjY2NjY1LCAtMTMuMDEwNDldLCBbLTM4LjQ5Nzc2NSwgLTEzLjAxMDQ2XSwgWy0zOC40OTc4NiwgLTEzLjAxMDQ0XSwgWy0zOC40OTc5MzUsIC0xMy4wMTA0MV0sIFstMzguNDk4MDIsIC0xMy4wMTA0MV0sIFstMzguNDk4MDk1LCAtMTMuMDEwNF0sIFstMzguNDk4MTgsIC0xMy4wMTA0XSwgWy0zOC40OTgyNiwgLTEzLjAxMDQxNV0sIFstMzguNDk4MzU2NjY2NjY2NjY2LCAtMTMuMDEwNDM2NjY2NjY2NjY3XSwgWy0zOC40OTg0MzUsIC0xMy4wMTA0NTVdLCBbLTM4LjQ5ODUxNSwgLTEzLjAxMDQ3NV0sIFstMzguNDk4NTkxNjY2NjY2NjcsIC0xMy4wMTA0OTVdLCBbLTM4LjQ5ODY4LCAtMTMuMDEwNTA1XSwgWy0zOC40OTg3NywgLTEzLjAxMDUwNV0sIFstMzguNDk4ODYsIC0xMy4wMTA1MTVdLCBbLTM4LjQ5ODk1LCAtMTMuMDEwNTA1XSwgWy0zOC40OTkwNCwgLTEzLjAxMDUyMzMzMzMzMzMzM10sIFstMzguNDk5MTMsIC0xMy4wMTA1MzY2NjY2NjY2NjddLCBbLTM4LjQ5OTIyNSwgLTEzLjAxMDU1XSwgWy0zOC40OTkzLCAtMTMuMDEwNTddLCBbLTM4LjQ5OTM4NSwgLTEzLjAxMDU1NV0sIFstMzguNDk5NDY1LCAtMTMuMDEwNTY1XSwgWy0zOC40OTk1NDUsIC0xMy4wMTA1OF0sIFstMzguNDk5NjIsIC0xMy4wMTA1OTVdLCBbLTM4LjQ5OTcsIC0xMy4wMTA1OTVdLCBbLTM4LjQ5OTc4ODMzMzMzMzMzNSwgLTEzLjAxMDYwMTY2NjY2NjY2Nl0sIFstMzguNDk5ODgsIC0xMy4wMTA1OV0sIFstMzguNDk5OTU1LCAtMTMuMDEwNl0sIFstMzguNTAwMDMsIC0xMy4wMTA2NF0sIFstMzguNTAwMTEsIC0xMy4wMTA2NzVdLCBbLTM4LjUwMDE5MTY2NjY2NjY2NiwgLTEzLjAxMDcxMTY2NjY2NjY2N10sIFstMzguNTAwMjkxNjY2NjY2NjcsIC0xMy4wMTA3MzVdLCBbLTM4LjUwMDM4LCAtMTMuMDEwNzRdLCBbLTM4LjUwMDQ3LCAtMTMuMDEwNzRdLCBbLTM4LjUwMDU1NjY2NjY2NjY3LCAtMTMuMDEwNzddLCBbLTM4LjUwMDYzNSwgLTEzLjAxMDc4XSwgWy0zOC41MDA3MiwgLTEzLjAxMDgwODMzMzMzMzMzM10sIFstMzguNTAwODIxNjY2NjY2NjcsIC0xMy4wMTA4NF0sIFstMzguNTAwOTI2NjY2NjY2NjY1LCAtMTMuMDEwODRdLCBbLTM4LjUwMTAxMTY2NjY2NjY2LCAtMTMuMDEwODU2NjY2NjY2NjY3XSwgWy0zOC41MDEwOTUsIC0xMy4wMTA4NjE2NjY2NjY2NjddLCBbLTM4LjUwMTE4LCAtMTMuMDEwODY2NjY2NjY2NjY3XSwgWy0zOC41MDEyNzUsIC0xMy4wMTA4NjMzMzMzMzMzMzNdLCBbLTM4LjUwMTM1LCAtMTMuMDEwODU1XSwgWy0zOC41MDE0MzUsIC0xMy4wMTA4NV0sIFstMzguNTAxNTMxNjY2NjY2NjY1LCAtMTMuMDEwODNdLCBbLTM4LjUwMTYyMTY2NjY2NjY2NSwgLTEzLjAxMDgwNV0sIFstMzguNTAxNywgLTEzLjAxMDc4NV0sIFstMzguNTAxOCwgLTEzLjAxMDc2NV0sIFstMzguNTAxODc1LCAtMTMuMDEwNzJdLCBbLTM4LjUwMTk1LCAtMTMuMDEwNjg2NjY2NjY2NjY3XSwgWy0zOC41MDIwMzUsIC0xMy4wMTA2NV0sIFstMzguNTAyMTIsIC0xMy4wMTA2MTVdLCBbLTM4LjUwMjE5NSwgLTEzLjAxMDU4NV0sIFstMzguNTAyMjcsIC0xMy4wMTA1NzVdLCBbLTM4LjUwMjM2MTY2NjY2NjY2NSwgLTEzLjAxMDU1NV0sIFstMzguNTAyNDQsIC0xMy4wMTA1NV0sIFstMzguNTAyNTE2NjY2NjY2NjY1LCAtMTMuMDEwNTQzMzMzMzMzMzMzXSwgWy0zOC41MDI2MTUsIC0xMy4wMTA1NF0sIFstMzguNTAyNywgLTEzLjAxMDU0XSwgWy0zOC41MDI3ODE2NjY2NjY2NjQsIC0xMy4wMTA1NDY2NjY2NjY2NjZdLCBbLTM4LjUwMjg2NSwgLTEzLjAxMDU2XSwgWy0zOC41MDI5NSwgLTEzLjAxMDU3XSwgWy0zOC41MDMwNCwgLTEzLjAxMDU5NV0sIFstMzguNTAzMTQsIC0xMy4wMTA2MjVdLCBbLTM4LjUwMzIyNSwgLTEzLjAxMDY1NV0sIFstMzguNTAzMzA1LCAtMTMuMDEwNjg1XSwgWy0zOC41MDMzOSwgLTEzLjAxMDcyXSwgWy0zOC41MDM0NywgLTEzLjAxMDc1NV0sIFstMzguNTAzNTQxNjY2NjY2NjYsIC0xMy4wMTA3OTVdLCBbLTM4LjUwMzYyNSwgLTEzLjAxMDgzNV0sIFstMzguNTAzNywgLTEzLjAxMDg2NjY2NjY2NjY2N10sIFstMzguNTAzNzg1LCAtMTMuMDEwOV0sIFstMzguNTAzODU1LCAtMTMuMDEwOTI1XSwgWy0zOC41MDM5NDE2NjY2NjY2NywgLTEzLjAxMDk2NV0sIFstMzguNTA0MDEsIC0xMy4wMTA5OTVdLCBbLTM4LjUwNDA5LCAtMTMuMDExMDI1XSwgWy0zOC41MDQxNzY2NjY2NjY2NjYsIC0xMy4wMTEwNV0sIFstMzguNTA0MjU2NjY2NjY2NjcsIC0xMy4wMTEwODE2NjY2NjY2NjhdLCBbLTM4LjUwNDM1NSwgLTEzLjAxMTEyNV0sIFstMzguNTA0NDI1LCAtMTMuMDExMTUxNjY2NjY2NjY3XSwgWy0zOC41MDQ0OTUsIC0xMy4wMTExODY2NjY2NjY2NjddLCBbLTM4LjUwNDU5LCAtMTMuMDExMjI2NjY2NjY2NjY3XSwgWy0zOC41MDQ2NzUsIC0xMy4wMTEyNl0sIFstMzguNTA0NzY1LCAtMTMuMDExMjldLCBbLTM4LjUwNDg1NSwgLTEzLjAxMTMxODMzMzMzMzMzNF0sIFstMzguNTA0OTI1LCAtMTMuMDExMzVdLCBbLTM4LjUwNSwgLTEzLjAxMTRdLCBbLTM4LjUwNTA3LCAtMTMuMDExNDM2NjY2NjY2NjY3XSwgWy0zOC41MDUxNTUsIC0xMy4wMTE0OF0sIFstMzguNTA1MjQsIC0xMy4wMTE1Ml0sIFstMzguNTA1MzExNjY2NjY2NjY0LCAtMTMuMDExNTQ1XSwgWy0zOC41MDUzOTUsIC0xMy4wMTE1Nl0sIFstMzguNTA1NDY2NjY2NjY2NjYsIC0xMy4wMTE1NzVdLCBbLTM4LjUwNTU0MTY2NjY2NjY2NiwgLTEzLjAxMTU4XSwgWy0zOC41MDU2MiwgLTEzLjAxMTU3XSwgWy0zOC41MDU2OTUsIC0xMy4wMTE1NTVdLCBbLTM4LjUwNTc4MzMzMzMzMzMzLCAtMTMuMDExNTM1XSwgWy0zOC41MDU4NzUsIC0xMy4wMTE1MTVdLCBbLTM4LjUwNTk1LCAtMTMuMDExNDg2NjY2NjY2NjY2XSwgWy0zOC41MDYwMzUsIC0xMy4wMTE0NV0sIFstMzguNTA2MTMxNjY2NjY2NjcsIC0xMy4wMTE0MjVdLCBbLTM4LjUwNjIyNSwgLTEzLjAxMTQwNV0sIFstMzguNTA2MzEsIC0xMy4wMTEzODY2NjY2NjY2NjddLCBbLTM4LjUwNjQsIC0xMy4wMTEzNjVdLCBbLTM4LjUwNjQ5LCAtMTMuMDExMzZdLCBbLTM4LjUwNjU3LCAtMTMuMDExMzddLCBbLTM4LjUwNjY0NSwgLTEzLjAxMTM3XSwgWy0zOC41MDY3MjUsIC0xMy4wMTEzNl0sIFstMzguNTA2ODEsIC0xMy4wMTEzNDE2NjY2NjY2NjddLCBbLTM4LjUwNjg5MTY2NjY2NjY3LCAtMTMuMDExMzNdLCBbLTM4LjUwNjk3NSwgLTEzLjAxMTMxNjY2NjY2NjY2OF0sIFstMzguNTA3MDU4MzMzMzMzMzMsIC0xMy4wMTEzM10sIFstMzguNTA3MTQ1LCAtMTMuMDExMzNdLCBbLTM4LjUwNzIxODMzMzMzMzMzNCwgLTEzLjAxMTMyNV0sIFstMzguNTA3MzE1LCAtMTMuMDExMzExNjY2NjY2NjY2XSwgWy0zOC41MDczOSwgLTEzLjAxMTMwNV0sIFstMzguNTA3NDc2NjY2NjY2NjcsIC0xMy4wMTEzMDVdLCBbLTM4LjUwNzU3NSwgLTEzLjAxMTI5MTY2NjY2NjY2N10sIFstMzguNTA3NjU1LCAtMTMuMDExMjY1XSwgWy0zOC41MDc3MjUsIC0xMy4wMTEyMzVdLCBbLTM4LjUwNzgxNSwgLTEzLjAxMTJdLCBbLTM4LjUwNzg5MzMzMzMzMzMzNSwgLTEzLjAxMTE2XSwgWy0zOC41MDc5NjUsIC0xMy4wMTExMV0sIFstMzguNTA4MDM1LCAtMTMuMDExMDVdLCBbLTM4LjUwODEyNSwgLTEzLjAxMTAxNV0sIFstMzguNTA4MjAxNjY2NjY2NjY1LCAtMTMuMDEwOTg1XSwgWy0zOC41MDgyODUsIC0xMy4wMTA5NjVdLCBbLTM4LjUwODM2NSwgLTEzLjAxMDk0NjY2NjY2NjY2N10sIFstMzguNTA4NDQxNjY2NjY2NjcsIC0xMy4wMTA5M10sIFstMzguNTA4NTI1LCAtMTMuMDEwOTE1XSwgWy0zOC41MDg2MSwgLTEzLjAxMDg5NV0sIFstMzguNTA4NywgLTEzLjAxMDg2NV0sIFstMzguNTA4NzksIC0xMy4wMTA4NDVdLCBbLTM4LjUwODg3ODMzMzMzMzMzNSwgLTEzLjAxMDgyMTY2NjY2NjY2N10sIFstMzguNTA4OTcsIC0xMy4wMTA3OV0sIFstMzguNTA5MDQsIC0xMy4wMTA3N10sIFstMzguNTA5MTMsIC0xMy4wMTA3NDVdLCBbLTM4LjUwOTIxLCAtMTMuMDEwNzI2NjY2NjY2NjY3XSwgWy0zOC41MDkyOCwgLTEzLjAxMDY4XSwgWy0zOC41MDkzNiwgLTEzLjAxMDYzNV0sIFstMzguNTA5NDI1LCAtMTMuMDEwNTldLCBbLTM4LjUwOTQ5NSwgLTEzLjAxMDU2NV0sIFstMzguNTA5NTg1LCAtMTMuMDEwNTVdLCBbLTM4LjUwOTY3MTY2NjY2NjY3LCAtMTMuMDEwNTVdLCBbLTM4LjUwOTc0NSwgLTEzLjAxMDU1NV0sIFstMzguNTA5ODIxNjY2NjY2NjcsIC0xMy4wMTA1NDE2NjY2NjY2NjddLCBbLTM4LjUwOTg5NjY2NjY2NjY3LCAtMTMuMDEwNTNdLCBbLTM4LjUwOTk4LCAtMTMuMDEwNTMxNjY2NjY2NjY3XSwgWy0zOC41MTAwNjUsIC0xMy4wMTA1MzVdLCBbLTM4LjUxMDE1LCAtMTMuMDEwNTU1XSwgWy0zOC41MTAyMjUsIC0xMy4wMTA1NDE2NjY2NjY2NjddLCBbLTM4LjUxMDMwNSwgLTEzLjAxMDUxNV0sIFstMzguNTEwMzg1LCAtMTMuMDEwNDldLCBbLTM4LjUxMDQ2LCAtMTMuMDEwNDc1XSwgWy0zOC41MTA1MzUsIC0xMy4wMTA0NDVdLCBbLTM4LjUxMDYyMTY2NjY2NjY2NSwgLTEzLjAxMDQzNV0sIFstMzguNTEwNywgLTEzLjAxMDQyNV0sIFstMzguNTEwNzc1LCAtMTMuMDEwNDFdLCBbLTM4LjUxMDg2NSwgLTEzLjAxMDM4NjY2NjY2NjY2N10sIFstMzguNTEwOTU2NjY2NjY2NjY1LCAtMTMuMDEwMzddLCBbLTM4LjUxMTA1LCAtMTMuMDEwMzVdLCBbLTM4LjUxMTEzLCAtMTMuMDEwMzJdLCBbLTM4LjUxMTIsIC0xMy4wMTAzXSwgWy0zOC41MTEyOCwgLTEzLjAxMDI5XSwgWy0zOC41MTEzNzUsIC0xMy4wMTAyOV0sIFstMzguNTExNDY1LCAtMTMuMDEwMjk2NjY2NjY2NjY3XSwgWy0zOC41MTE1MzgzMzMzMzMzMzQsIC0xMy4wMTAyODE2NjY2NjY2NjZdLCBbLTM4LjUxMTYzNSwgLTEzLjAxMDIyNV0sIFstMzguNTExNzEsIC0xMy4wMTAxODVdLCBbLTM4LjUxMTc5NSwgLTEzLjAxMDEzNjY2NjY2NjY2Nl0sIFstMzguNTExODc1LCAtMTMuMDEwMTE1XSwgWy0zOC41MTE5NTE2NjY2NjY2NywgLTEzLjAxMDA2NjY2NjY2NjY2N10sIFstMzguNTEyMDMsIC0xMy4wMTAwMTMzMzMzMzMzMzNdLCBbLTM4LjUxMjEwNjY2NjY2NjY3LCAtMTMuMDA5OTc2NjY2NjY2NjY3XSwgWy0zOC41MTIxODE2NjY2NjY2NiwgLTEzLjAwOTk2XSwgWy0zOC41MTIyOCwgLTEzLjAwOTk3NjY2NjY2NjY2N10sIFstMzguNTEyMzU1LCAtMTMuMDEwMDA1XSwgWy0zOC41MTI0NSwgLTEzLjAxMDAxXSwgWy0zOC41MTI1NCwgLTEzLjAxMDAxXSwgWy0zOC41MTI2MiwgLTEzLjAxMDAxXSwgWy0zOC41MTI2OTUsIC0xMy4wMDk5ODY2NjY2NjY2NjZdLCBbLTM4LjUxMjc3NSwgLTEzLjAwOTk4XSwgWy0zOC41MTI4NiwgLTEzLjAwOTk2XSwgWy0zOC41MTI5MzUsIC0xMy4wMDk5MzE2NjY2NjY2NjddLCBbLTM4LjUxMzAxLCAtMTMuMDA5OTI1XSwgWy0zOC41MTMwODUsIC0xMy4wMDk5MDE2NjY2NjY2NjZdLCBbLTM4LjUxMzE1NSwgLTEzLjAwOTg3MTY2NjY2NjY2N10sIFstMzguNTEzMjMsIC0xMy4wMDk4NTE2NjY2NjY2NjZdLCBbLTM4LjUxMzMxNSwgLTEzLjAwOTgzNV0sIFstMzguNTEzNCwgLTEzLjAwOTgzNV0sIFstMzguNTEzNDc1LCAtMTMuMDA5ODVdLCBbLTM4LjUxMzU2LCAtMTMuMDA5ODZdLCBbLTM4LjUxMzY1MTY2NjY2NjY3LCAtMTMuMDA5ODQxNjY2NjY2NjY3XSwgWy0zOC41MTM3NSwgLTEzLjAwOTgzXSwgWy0zOC41MTM4NDUsIC0xMy4wMDk3OTVdLCBbLTM4LjUxMzkyNSwgLTEzLjAwOTc3NV0sIFstMzguNTE0MDEsIC0xMy4wMDk3Nl0sIFstMzguNTE0MDg1LCAtMTMuMDA5NzM1XSwgWy0zOC41MTQxNzUsIC0xMy4wMDk3MV0sIFstMzguNTE0MjY2NjY2NjY2NjY0LCAtMTMuMDA5NjddLCBbLTM4LjUxNDM1MTY2NjY2NjY3LCAtMTMuMDA5NjQ1XSwgWy0zOC41MTQ0MjE2NjY2NjY2NjQsIC0xMy4wMDk2MDVdLCBbLTM4LjUxNDUsIC0xMy4wMDk1NzY2NjY2NjY2NjZdLCBbLTM4LjUxNDU5LCAtMTMuMDA5NTQ1XSwgWy0zOC41MTQ2OSwgLTEzLjAwOTUyXSwgWy0zOC41MTQ3OCwgLTEzLjAwOTUwNV0sIFstMzguNTE0ODU1LCAtMTMuMDA5NDldLCBbLTM4LjUxNDkzLCAtMTMuMDA5NDVdLCBbLTM4LjUxNDk5MTY2NjY2NjY3LCAtMTMuMDA5MzhdLCBbLTM4LjUxNTA0LCAtMTMuMDA5MzIxNjY2NjY2NjY3XSwgWy0zOC41MTUwOTE2NjY2NjY2NiwgLTEzLjAwOTI3XSwgWy0zOC41MTUxNTE2NjY2NjY2NywgLTEzLjAwOTIxXSwgWy0zOC41MTUyMDUsIC0xMy4wMDkxNDE2NjY2NjY2NjZdLCBbLTM4LjUxNTI2LCAtMTMuMDA5MDldLCBbLTM4LjUxNTMzLCAtMTMuMDA5MDI2NjY2NjY2NjY3XSwgWy0zOC41MTUzNzE2NjY2NjY2NywgLTEzLjAwODk3XSwgWy0zOC41MTU0MjUsIC0xMy4wMDg5MV0sIFstMzguNTE1NDc2NjY2NjY2NjY1LCAtMTMuMDA4ODVdLCBbLTM4LjUxNTU0NjY2NjY2NjY2NSwgLTEzLjAwODc5XSwgWy0zOC41MTU1OTY2NjY2NjY2NywgLTEzLjAwODczXSwgWy0zOC41MTU2NTUsIC0xMy4wMDg2OF0sIFstMzguNTE1NzIsIC0xMy4wMDg2M10sIFstMzguNTE1NzcxNjY2NjY2NjY2LCAtMTMuMDA4NTczMzMzMzMzMzMzXSwgWy0zOC41MTU4MywgLTEzLjAwODUyXSwgWy0zOC41MTU5MDUsIC0xMy4wMDg0NTE2NjY2NjY2NjZdLCBbLTM4LjUxNTk1MTY2NjY2NjY2NiwgLTEzLjAwODM3NjY2NjY2NjY2N10sIFstMzguNTE2MDExNjY2NjY2NjY0LCAtMTMuMDA4MzJdLCBbLTM4LjUxNjA2NjY2NjY2NjY3LCAtMTMuMDA4MjU1XSwgWy0zOC41MTYxMzE2NjY2NjY2NjYsIC0xMy4wMDgyXSwgWy0zOC41MTYyMSwgLTEzLjAwODE1NV0sIFstMzguNTE2MjgsIC0xMy4wMDgxMDVdLCBbLTM4LjUxNjM2NSwgLTEzLjAwODA2XSwgWy0zOC41MTY0MzUsIC0xMy4wMDgwM10sIFstMzguNTE2NTEsIC0xMy4wMDhdLCBbLTM4LjUxNjU5NSwgLTEzLjAwNzk4NV0sIFstMzguNTE2NjcsIC0xMy4wMDc5NTVdLCBbLTM4LjUxNjc1MTY2NjY2NjY2NCwgLTEzLjAwNzkyNjY2NjY2NjY2Nl0sIFstMzguNTE2ODMsIC0xMy4wMDc5MDVdLCBbLTM4LjUxNjkwNSwgLTEzLjAwNzg4MTY2NjY2NjY2Nl0sIFstMzguNTE2OTgsIC0xMy4wMDc4N10sIFstMzguNTE3MDUxNjY2NjY2NjcsIC0xMy4wMDc5MDVdLCBbLTM4LjUxNzEzODMzMzMzMzMzNSwgLTEzLjAwNzk0XSwgWy0zOC41MTcyMTUsIC0xMy4wMDc5NTVdLCBbLTM4LjUxNzMxNSwgLTEzLjAwNzk2XSwgWy0zOC41MTczOTUsIC0xMy4wMDc5NF0sIFstMzguNTE3NDcsIC0xMy4wMDc5NDVdLCBbLTM4LjUxNzU1LCAtMTMuMDA3OTU2NjY2NjY2NjY3XSwgWy0zOC41MTc2NDUsIC0xMy4wMDc5Nl0sIFstMzguNTE3NzIsIC0xMy4wMDc5NF0sIFstMzguNTE3Nzk1LCAtMTMuMDA3OTM2NjY2NjY2NjY2XSwgWy0zOC41MTc4ODUsIC0xMy4wMDc5NjE2NjY2NjY2NjddLCBbLTM4LjUxNzk2LCAtMTMuMDA3OTc1XSwgWy0zOC41MTgwMzUsIC0xMy4wMDc5ODVdLCBbLTM4LjUxODEyLCAtMTMuMDA3OTg1XSwgWy0zOC41MTgxOTUsIC0xMy4wMDc5OTY2NjY2NjY2NjddLCBbLTM4LjUxODI5LCAtMTMuMDA4XSwgWy0zOC41MTgzNjE2NjY2NjY2NjQsIC0xMy4wMDgwMDE2NjY2NjY2NjddLCBbLTM4LjUxODQ1NSwgLTEzLjAwNzk5XSwgWy0zOC41MTg1NDUsIC0xMy4wMDc5NzVdLCBbLTM4LjUxODYyNSwgLTEzLjAwNzk3XSwgWy0zOC41MTg3MDY2NjY2NjY2NywgLTEzLjAwNzk2NjY2NjY2NjY2Nl0sIFstMzguNTE4Nzg1LCAtMTMuMDA3OTY1XSwgWy0zOC41MTg4NiwgLTEzLjAwNzk2NV0sIFstMzguNTE4OTUxNjY2NjY2NjY2LCAtMTMuMDA3OTY2NjY2NjY2NjY2XSwgWy0zOC41MTkwMzE2NjY2NjY2NiwgLTEzLjAwNzk1NV0sIFstMzguNTE5MTI1LCAtMTMuMDA3OTU1XSwgWy0zOC41MTkyMTE2NjY2NjY2NiwgLTEzLjAwNzk5NV0sIFstMzguNTE5MjksIC0xMy4wMDhdLCBbLTM4LjUxOTM4NSwgLTEzLjAwODAzXSwgWy0zOC41MTk0NTE2NjY2NjY2NywgLTEzLjAwODA2XSwgWy0zOC41MTk1MTUsIC0xMy4wMDgxMDE2NjY2NjY2NjddLCBbLTM4LjUxOTU5NSwgLTEzLjAwODE1XSwgWy0zOC41MTk2NzUsIC0xMy4wMDgyXSwgWy0zOC41MTk3NTUsIC0xMy4wMDgyNV0sIFstMzguNTE5ODM1LCAtMTMuMDA4MzFdLCBbLTM4LjUxOTksIC0xMy4wMDgzNzVdLCBbLTM4LjUxOTk3MTY2NjY2NjY2LCAtMTMuMDA4NDMxNjY2NjY2NjY3XSwgWy0zOC41MjAwNCwgLTEzLjAwODQ5NjY2NjY2NjY2Nl0sIFstMzguNTIwMSwgLTEzLjAwODU2NV0sIFstMzguNTIwMTc1LCAtMTMuMDA4NjI1XSwgWy0zOC41MjAyMzY2NjY2NjY2NywgLTEzLjAwODY3MTY2NjY2NjY2Nl0sIFstMzguNTIwMjk1LCAtMTMuMDA4NzNdLCBbLTM4LjUyMDM1NSwgLTEzLjAwODc4MTY2NjY2NjY2Nl0sIFstMzguNTIwNDIsIC0xMy4wMDg4MzY2NjY2NjY2NjddLCBbLTM4LjUyMDQ3MzMzMzMzMzMzNSwgLTEzLjAwODg5XSwgWy0zOC41MjA1NCwgLTEzLjAwODkzMTY2NjY2NjY2N10sIFstMzguNTIwNTk1LCAtMTMuMDA4OTg4MzMzMzMzMzMzXSwgWy0zOC41MjA2NiwgLTEzLjAwOTA0MTY2NjY2NjY2N10sIFstMzguNTIwNzE1LCAtMTMuMDA5MDk1XSwgWy0zOC41MjA3NzY2NjY2NjY2NywgLTEzLjAwOTE1NV0sIFstMzguNTIwODM1LCAtMTMuMDA5MjA2NjY2NjY2NjY3XSwgWy0zOC41MjA5LCAtMTMuMDA5MjYxNjY2NjY2NjY3XSwgWy0zOC41MjA5NjUsIC0xMy4wMDkzMV0sIFstMzguNTIxMDM1LCAtMTMuMDA5MzddLCBbLTM4LjUyMTA5LCAtMTMuMDA5NDI1XSwgWy0zOC41MjExNjUsIC0xMy4wMDk0ODE2NjY2NjY2NjZdLCBbLTM4LjUyMTI0NSwgLTEzLjAwOTUzNjY2NjY2NjY2N10sIFstMzguNTIxMzE1LCAtMTMuMDA5NTk2NjY2NjY2NjY3XSwgWy0zOC41MjEzNywgLTEzLjAwOTY1XSwgWy0zOC41MjE0MiwgLTEzLjAwOTcwNV0sIFstMzguNTIxNDk1LCAtMTMuMDA5NzZdLCBbLTM4LjUyMTU2LCAtMTMuMDA5OF0sIFstMzguNTIxNjI4MzMzMzMzMzMsIC0xMy4wMDk4MzVdLCBbLTM4LjUyMTY5NjY2NjY2NjY2NCwgLTEzLjAwOTg3XSwgWy0zOC41MjE3NjE2NjY2NjY2NywgLTEzLjAwOTkxXSwgWy0zOC41MjE4NDY2NjY2NjY2NywgLTEzLjAwOTk1NV0sIFstMzguNTIxOTIzMzMzMzMzMzMsIC0xMy4wMDk5OV0sIFstMzguNTIyMDA1LCAtMTMuMDEwMDFdLCBbLTM4LjUyMjA4NSwgLTEzLjAxMDAyNV0sIFstMzguNTIyMTcsIC0xMy4wMTAwNDE2NjY2NjY2NjZdLCBbLTM4LjUyMjI0MTY2NjY2NjY2NiwgLTEzLjAxMDA2XSwgWy0zOC41MjIzMywgLTEzLjAxMDA4NV0sIFstMzguNTIyNDE1LCAtMTMuMDEwMTA1XSwgWy0zOC41MjI0OTY2NjY2NjY2NywgLTEzLjAxMDEzXSwgWy0zOC41MjI1ODY2NjY2NjY2NywgLTEzLjAxMDE2XSwgWy0zOC41MjI2NzUsIC0xMy4wMTAxOF0sIFstMzguNTIyNzYsIC0xMy4wMTAyMV0sIFstMzguNTIyODU1LCAtMTMuMDEwMjNdLCBbLTM4LjUyMjk0NSwgLTEzLjAxMDI1NV0sIFstMzguNTIzMDQsIC0xMy4wMTAyNjE2NjY2NjY2NjddLCBbLTM4LjUyMzExNSwgLTEzLjAxMDI2MTY2NjY2NjY2N10sIFstMzguNTIzMjA2NjY2NjY2NjcsIC0xMy4wMTAyNjVdLCBbLTM4LjUyMzI4NSwgLTEzLjAxMDI2NV0sIFstMzguNTIzMzY1LCAtMTMuMDEwMjY1XSwgWy0zOC41MjM0NTE2NjY2NjY2NjYsIC0xMy4wMTAyNTE2NjY2NjY2NjddLCBbLTM4LjUyMzUyNSwgLTEzLjAxMDIzMTY2NjY2NjY2Nl0sIFstMzguNTIzNjEsIC0xMy4wMTAyMTVdLCBbLTM4LjUyMzY5LCAtMTMuMDEwMTk2NjY2NjY2NjY3XSwgWy0zOC41MjM3NiwgLTEzLjAxMDE3XSwgWy0zOC41MjM4NDUsIC0xMy4wMTAxMzY2NjY2NjY2NjZdLCBbLTM4LjUyMzkxNSwgLTEzLjAxMDEwNjY2NjY2NjY2N10sIFstMzguNTIzOTg1LCAtMTMuMDEwMDddLCBbLTM4LjUyNDA1NSwgLTEzLjAxMDAyXSwgWy0zOC41MjQxMTY2NjY2NjY2NjQsIC0xMy4wMDk5NzY2NjY2NjY2NjddLCBbLTM4LjUyNDE4ODMzMzMzMzMzNSwgLTEzLjAwOTkyNV0sIFstMzguNTI0MjY1LCAtMTMuMDA5ODc1XSwgWy0zOC41MjQzNDE2NjY2NjY2NjUsIC0xMy4wMDk4M10sIFstMzguNTI0NDEzMzMzMzMzMzM1LCAtMTMuMDA5NzgxNjY2NjY2NjY3XSwgWy0zOC41MjQ0OTUsIC0xMy4wMDk3MzVdLCBbLTM4LjUyNDU3NjY2NjY2NjY3LCAtMTMuMDA5NzFdLCBbLTM4LjUyNDY1NSwgLTEzLjAwOTY4NV0sIFstMzguNTI0NzM1LCAtMTMuMDA5NjQ2NjY2NjY2NjY3XSwgWy0zOC41MjQ4MDE2NjY2NjY2NywgLTEzLjAwOTYxNV0sIFstMzguNTI0ODc4MzMzMzMzMzM0LCAtMTMuMDA5NTg1XSwgWy0zOC41MjQ5NjE2NjY2NjY2NywgLTEzLjAwOTU1MTY2NjY2NjY2N10sIFstMzguNTI1MDQsIC0xMy4wMDk1MTVdLCBbLTM4LjUyNTEwMzMzMzMzMzMzNCwgLTEzLjAwOTQ3NV0sIFstMzguNTI1MTkxNjY2NjY2NjY1LCAtMTMuMDA5NDRdLCBbLTM4LjUyNTI3NSwgLTEzLjAwOTQwODMzMzMzMzMzM10sIFstMzguNTI1MzQ1LCAtMTMuMDA5MzldLCBbLTM4LjUyNTQzLCAtMTMuMDA5MzddLCBbLTM4LjUyNTUxNSwgLTEzLjAwOTM0ODMzMzMzMzMzNF0sIFstMzguNTI1NiwgLTEzLjAwOTM0NV0sIFstMzguNTI1Njc1LCAtMTMuMDA5MzU2NjY2NjY2NjY3XSwgWy0zOC41MjU3NSwgLTEzLjAwOTM3MTY2NjY2NjY2N10sIFstMzguNTI1ODQxNjY2NjY2NjY1LCAtMTMuMDA5Mzc1XSwgWy0zOC41MjU5NCwgLTEzLjAwOTM2XSwgWy0zOC41MjYwMjUsIC0xMy4wMDkzNDY2NjY2NjY2NjhdLCBbLTM4LjUyNjEyNjY2NjY2NjY3LCAtMTMuMDA5MzUxNjY2NjY2NjY3XSwgWy0zOC41MjYyMDE2NjY2NjY2NjUsIC0xMy4wMDkzNTE2NjY2NjY2NjddLCBbLTM4LjUyNjI4NSwgLTEzLjAwOTM2XSwgWy0zOC41MjYzODE2NjY2NjY2NjYsIC0xMy4wMDkzNzMzMzMzMzMzMzNdLCBbLTM4LjUyNjQ2ODMzMzMzMzMzNCwgLTEzLjAwOTM5NV0sIFstMzguNTI2NTY1LCAtMTMuMDA5NDAxNjY2NjY2NjY3XSwgWy0zOC41MjY2NTUsIC0xMy4wMDk0MDgzMzMzMzMzMzNdLCBbLTM4LjUyNjc1NSwgLTEzLjAwOTQxNV0sIFstMzguNTI2ODQsIC0xMy4wMDk0MjE2NjY2NjY2NjZdLCBbLTM4LjUyNjkyNSwgLTEzLjAwOTQxNV0sIFstMzguNTI3MDI1LCAtMTMuMDA5NDFdLCBbLTM4LjUyNzEwNSwgLTEzLjAwOTQyXSwgWy0zOC41MjcxOSwgLTEzLjAwOTQyNV0sIFstMzguNTI3MjcsIC0xMy4wMDk0MjVdLCBbLTM4LjUyNzM1LCAtMTMuMDA5NDM1XSwgWy0zOC41Mjc0MywgLTEzLjAwOTQ1NV0sIFstMzguNTI3NTExNjY2NjY2NjcsIC0xMy4wMDk0NzVdLCBbLTM4LjUyNzYsIC0xMy4wMDk0OTVdLCBbLTM4LjUyNzcsIC0xMy4wMDk1MTE2NjY2NjY2NjddLCBbLTM4LjUyNzc5MTY2NjY2NjY2NiwgLTEzLjAwOTUzXSwgWy0zOC41Mjc4NzUsIC0xMy4wMDk1NDVdLCBbLTM4LjUyNzk1NSwgLTEzLjAwOTU0MTY2NjY2NjY2N10sIFstMzguNTI4MDM1LCAtMTMuMDA5NTVdLCBbLTM4LjUyODEzNSwgLTEzLjAwOTU3NV0sIFstMzguNTI4MjIsIC0xMy4wMDk1OTE2NjY2NjY2NjddLCBbLTM4LjUyODMxNSwgLTEzLjAwOTYwNjY2NjY2NjY2N10sIFstMzguNTI4NCwgLTEzLjAwOTYyXSwgWy0zOC41Mjg0OCwgLTEzLjAwOTYzXSwgWy0zOC41Mjg1NzUwMDAwMDAwMDQsIC0xMy4wMDk2NV0sIFstMzguNTI4NjYxNjY2NjY2NjY1LCAtMTMuMDA5NjZdLCBbLTM4LjUyODc2LCAtMTMuMDA5NjYxNjY2NjY2NjY2XSwgWy0zOC41Mjg4NTUsIC0xMy4wMDk2N10sIFstMzguNTI4OTUsIC0xMy4wMDk2ODVdLCBbLTM4LjUyOTAzLCAtMTMuMDA5NjldLCBbLTM4LjUyOTExLCAtMTMuMDA5NjkxNjY2NjY2NjY3XSwgWy0zOC41MjkxODMzMzMzMzMzMzYsIC0xMy4wMDk3MDVdLCBbLTM4LjUyOTI2MTY2NjY2NjY2LCAtMTMuMDA5NzJdLCBbLTM4LjUyOTMzODMzMzMzMzMzNSwgLTEzLjAwOTcyODMzMzMzMzMzM10sIFstMzguNTI5NDI1LCAtMTMuMDA5NzI1XSwgWy0zOC41Mjk1LCAtMTMuMDA5NzRdLCBbLTM4LjUyOTU5LCAtMTMuMDA5NzU1XSwgWy0zOC41Mjk2ODUsIC0xMy4wMDk3NjVdLCBbLTM4LjUyOTc3LCAtMTMuMDA5NzY1XSwgWy0zOC41Mjk4NTUsIC0xMy4wMDk3OF0sIFstMzguNTI5OTQzMzMzMzMzMzM1LCAtMTMuMDA5Nzk1XSwgWy0zOC41MzAwMzUsIC0xMy4wMDk4MDY2NjY2NjY2NjZdLCBbLTM4LjUzMDEyLCAtMTMuMDA5ODIxNjY2NjY2NjY3XSwgWy0zOC41MzAxOTUsIC0xMy4wMDk4MzY2NjY2NjY2NjddLCBbLTM4LjUzMDI4LCAtMTMuMDA5ODU1XSwgWy0zOC41MzAzNjE2NjY2NjY2NjQsIC0xMy4wMDk4NjVdLCBbLTM4LjUzMDQ2LCAtMTMuMDA5ODddLCBbLTM4LjUzMDUzNSwgLTEzLjAwOTg4MTY2NjY2NjY2N10sIFstMzguNTMwNjMxNjY2NjY2NjY1LCAtMTMuMDA5ODg1XSwgWy0zOC41MzA3MTUsIC0xMy4wMDk4OV0sIFstMzguNTMwOCwgLTEzLjAwOTkxXSwgWy0zOC41MzA4OCwgLTEzLjAwOTkxODMzMzMzMzMzM10sIFstMzguNTMwOTcxNjY2NjY2NjY2LCAtMTMuMDA5OTNdLCBbLTM4LjUzMTA1NSwgLTEzLjAwOTkzMTY2NjY2NjY2N10sIFstMzguNTMxMTQsIC0xMy4wMDk5NF0sIFstMzguNTMxMjIsIC0xMy4wMDk5NV0sIFstMzguNTMxMjk1LCAtMTMuMDA5OTY1XSwgWy0zOC41MzEzODUsIC0xMy4wMDk5OF0sIFstMzguNTMxNDcsIC0xMy4wMDk5OF0sIFstMzguNTMxNTQ2NjY2NjY2NjY0LCAtMTMuMDA5OTldLCBbLTM4LjUzMTYzNjY2NjY2NjY2NCwgLTEzLjAxMDAwNjY2NjY2NjY2N10sIFstMzguNTMxNzMsIC0xMy4wMTAwMl0sIFstMzguNTMxODA1LCAtMTMuMDA5OThdLCBbLTM4LjUzMTgzODMzMzMzMzMzLCAtMTMuMDA5OTA1XSwgWy0zOC41MzE4NTUsIC0xMy4wMDk4M10sIFstMzguNTMxODc2NjY2NjY2NjcsIC0xMy4wMDk3MzVdLCBbLTM4LjUzMTkwMTY2NjY2NjY3LCAtMTMuMDA5NjYxNjY2NjY2NjY2XSwgWy0zOC41MzE5MzE2NjY2NjY2NjUsIC0xMy4wMDk1OV0sIFstMzguNTMxOTY2NjY2NjY2NjcsIC0xMy4wMDk1Ml0sIFstMzguNTMyMDQ1LCAtMTMuMDA5NV0sIFstMzguNTMyMDY4MzMzMzMzMzM1LCAtMTMuMDA5NTk1XSwgWy0zOC41MzIwNzE2NjY2NjY2NywgLTEzLjAwOTY3MTY2NjY2NjY2Nl0sIFstMzguNTMyMDUsIC0xMy4wMDk3NjVdLCBbLTM4LjUzMjAyLCAtMTMuMDA5ODM2NjY2NjY2NjY3XSwgWy0zOC41MzE5OCwgLTEzLjAwOTldLCBbLTM4LjUzMTkzNSwgLTEzLjAwOTk2XSwgWy0zOC41MzE4NywgLTEzLjAxMDAzNV0sIFstMzguNTMxODA1LCAtMTMuMDEwMDg2NjY2NjY2NjY2XSwgWy0zOC41MzE3MjY2NjY2NjY2NjQsIC0xMy4wMTAxMTE2NjY2NjY2NjddLCBbLTM4LjUzMTY0NjY2NjY2NjY3LCAtMTMuMDEwMTJdLCBbLTM4LjUzMTU3MTY2NjY2NjY2NSwgLTEzLjAxMDEyXSwgWy0zOC41MzE1LCAtMTMuMDEwMTAxNjY2NjY2NjY3XSwgWy0zOC41MzE0MywgLTEzLjAxMDA3MTY2NjY2NjY2N10sIFstMzguNTMxMzM1LCAtMTMuMDEwMDVdLCBbLTM4LjUzMTI1LCAtMTMuMDEwMDI1XSwgWy0zOC41MzExNjY2NjY2NjY2NjQsIC0xMy4wMTAwMV0sIFstMzguNTMxMDc4MzMzMzMzMzMsIC0xMy4wMDk5OTY2NjY2NjY2NjZdLCBbLTM4LjUzMDk5NSwgLTEzLjAwOTk5XSwgWy0zOC41MzA5MSwgLTEzLjAwOTk4NV0sIFstMzguNTMwODE1LCAtMTMuMDA5OThdLCBbLTM4LjUzMDcxNjY2NjY2NjY2LCAtMTMuMDA5OTddLCBbLTM4LjUzMDYzLCAtMTMuMDA5OTU1XSwgWy0zOC41MzA1NDUsIC0xMy4wMDk5NF0sIFstMzguNTMwNDcsIC0xMy4wMDk5M10sIFstMzguNTMwMzk1LCAtMTMuMDA5OTI1XSwgWy0zOC41MzAzMDUsIC0xMy4wMDk5MTY2NjY2NjY2NjddLCBbLTM4LjUzMDIzMTY2NjY2NjY2NiwgLTEzLjAwOTkxXSwgWy0zOC41MzAxNSwgLTEzLjAwOTldLCBbLTM4LjUzMDA2LCAtMTMuMDA5ODgxNjY2NjY2NjY3XSwgWy0zOC41Mjk5NzY2NjY2NjY2NywgLTEzLjAwOTg2NjY2NjY2NjY2N10sIFstMzguNTI5ODk2NjY2NjY2NjY2LCAtMTMuMDA5ODVdLCBbLTM4LjUyOTgwNjY2NjY2NjY2NiwgLTEzLjAwOTg0XSwgWy0zOC41Mjk3MTY2NjY2NjY2NjYsIC0xMy4wMDk4MjMzMzMzMzMzMzNdLCBbLTM4LjUyOTYzNSwgLTEzLjAwOTgwNV0sIFstMzguNTI5NTU1LCAtMTMuMDA5OF0sIFstMzguNTI5NDcsIC0xMy4wMDk4MDVdLCBbLTM4LjUyOTM5NSwgLTEzLjAwOTc5NV0sIFstMzguNTI5MzEsIC0xMy4wMDk3ODY2NjY2NjY2NjddLCBbLTM4LjUyOTIzNSwgLTEzLjAwOThdLCBbLTM4LjUyOTEzNSwgLTEzLjAwOTc5NV0sIFstMzguNTI5MDQxNjY2NjY2NjY0LCAtMTMuMDA5Nzc2NjY2NjY2NjY3XSwgWy0zOC41Mjg5NzE2NjY2NjY2NiwgLTEzLjAwOTc2XSwgWy0zOC41Mjg4ODMzMzMzMzMzMywgLTEzLjAwOTc0NV0sIFstMzguNTI4NzksIC0xMy4wMDk3MjgzMzMzMzMzMzNdLCBbLTM4LjUyODcwNSwgLTEzLjAwOTcyXSwgWy0zOC41Mjg2MywgLTEzLjAwOTcxMTY2NjY2NjY2Nl0sIFstMzguNTI4NTQsIC0xMy4wMDk3XSwgWy0zOC41Mjg0NTUsIC0xMy4wMDk2ODVdLCBbLTM4LjUyODM2MTY2NjY2NjY3LCAtMTMuMDA5Njc1XSwgWy0zOC41MjgyNzUsIC0xMy4wMDk2Nl0sIFstMzguNTI4MTksIC0xMy4wMDk2NTE2NjY2NjY2NjddLCBbLTM4LjUyODExNjY2NjY2NjY3LCAtMTMuMDA5NjVdLCBbLTM4LjUyODAyNSwgLTEzLjAwOTYzMTY2NjY2NjY2N10sIFstMzguNTI3OTMsIC0xMy4wMDk2MTE2NjY2NjY2NjZdLCBbLTM4LjUyNzg0MTY2NjY2NjY3LCAtMTMuMDA5NjA1XSwgWy0zOC41Mjc3NTUsIC0xMy4wMDk2XSwgWy0zOC41Mjc2NzMzMzMzMzMzMywgLTEzLjAwOTU5NjY2NjY2NjY2N10sIFstMzguNTI3NTg1LCAtMTMuMDA5NTldLCBbLTM4LjUyNzQ5NSwgLTEzLjAwOTU3XSwgWy0zOC41Mjc0MSwgLTEzLjAwOTU1NV0sIFstMzguNTI3MzIxNjY2NjY2NjY2LCAtMTMuMDA5NTQ1XSwgWy0zOC41MjcyMywgLTEzLjAwOTUzNV0sIFstMzguNTI3MTQxNjY2NjY2NjY1LCAtMTMuMDA5NTE1XSwgWy0zOC41MjcwNiwgLTEzLjAwOTQ5MTY2NjY2NjY2N10sIFstMzguNTI2OTY1LCAtMTMuMDA5NDUxNjY2NjY2NjY3XSwgWy0zOC41MjY4NywgLTEzLjAwOTQzNV0sIFstMzguNTI2NzgxNjY2NjY2NjY1LCAtMTMuMDA5NDE1XSwgWy0zOC41MjY3MDUsIC0xMy4wMDkzOV0sIFstMzguNTI2NjMsIC0xMy4wMDkzOF0sIFstMzguNTI2NTQ1LCAtMTMuMDA5MzhdLCBbLTM4LjUyNjQ2LCAtMTMuMDA5MzhdLCBbLTM4LjUyNjM3NjY2NjY2NjY2NCwgLTEzLjAwOTM5XSwgWy0zOC41MjYyODUsIC0xMy4wMDkzOV0sIFstMzguNTI2MTk2NjY2NjY2NjY0LCAtMTMuMDA5Mzc1XSwgWy0zOC41MjYxMSwgLTEzLjAwOTM2NV0sIFstMzguNTI2MDMsIC0xMy4wMDkzNDY2NjY2NjY2NjhdLCBbLTM4LjUyNTk0NjY2NjY2NjY3LCAtMTMuMDA5MzZdLCBbLTM4LjUyNTg2NSwgLTEzLjAwOTM3NV0sIFstMzguNTI1NzksIC0xMy4wMDkzNzY2NjY2NjY2NjZdLCBbLTM4LjUyNTcwMTY2NjY2NjY3LCAtMTMuMDA5MzhdLCBbLTM4LjUyNTYxNSwgLTEzLjAwOTM2NjY2NjY2NjY2N10sIFstMzguNTI1NTMsIC0xMy4wMDkzNjgzMzMzMzMzMzNdLCBbLTM4LjUyNTQ1NSwgLTEzLjAwOTM2NjY2NjY2NjY2N10sIFstMzguNTI1MzcsIC0xMy4wMDkzODVdLCBbLTM4LjUyNTI5NSwgLTEzLjAwOTQyXSwgWy0zOC41MjUyMiwgLTEzLjAwOTQ2XSwgWy0zOC41MjUxMzUsIC0xMy4wMDk0ODVdLCBbLTM4LjUyNTA2LCAtMTMuMDA5NTA1XSwgWy0zOC41MjQ5ODUsIC0xMy4wMDk1MzVdLCBbLTM4LjUyNDkwMTY2NjY2NjY2NSwgLTEzLjAwOTU1NV0sIFstMzguNTI0ODE1LCAtMTMuMDA5NTc2NjY2NjY2NjY2XSwgWy0zOC41MjQ3NDUsIC0xMy4wMDk2MV0sIFstMzguNTI0NjcsIC0xMy4wMDk2NDVdLCBbLTM4LjUyNDYsIC0xMy4wMDk2NzE2NjY2NjY2NjZdLCBbLTM4LjUyNDUyMTY2NjY2NjY2NSwgLTEzLjAwOTcyXSwgWy0zOC41MjQ0NTUsIC0xMy4wMDk3N10sIFstMzguNTI0MzksIC0xMy4wMDk4MjY2NjY2NjY2NjddLCBbLTM4LjUyNDMzLCAtMTMuMDA5ODc1XSwgWy0zOC41MjQyNjUsIC0xMy4wMDk5MTVdLCBbLTM4LjUyNDE5MTY2NjY2NjY3LCAtMTMuMDA5OTU1XSwgWy0zOC41MjQxMDE2NjY2NjY2NywgLTEzLjAwOTk5XSwgWy0zOC41MjQwMTUsIC0xMy4wMTAwMTY2NjY2NjY2NjddLCBbLTM4LjUyMzk0LCAtMTMuMDEwMDVdLCBbLTM4LjUyMzg2MTY2NjY2NjY3LCAtMTMuMDEwMDkxNjY2NjY2NjY2XSwgWy0zOC41MjM3OTUsIC0xMy4wMTAxMzE2NjY2NjY2NjZdLCBbLTM4LjUyMzcwNSwgLTEzLjAxMDE2XSwgWy0zOC41MjM2MywgLTEzLjAxMDE5XSwgWy0zOC41MjM1NiwgLTEzLjAxMDIxXSwgWy0zOC41MjM0ODUsIC0xMy4wMTAyMjY2NjY2NjY2NjZdLCBbLTM4LjUyMzQxLCAtMTMuMDEwMjQ1XSwgWy0zOC41MjMzMzUsIC0xMy4wMTAyNl0sIFstMzguNTIzMjYsIC0xMy4wMTAyN10sIFstMzguNTIzMTg1LCAtMTMuMDEwMjddLCBbLTM4LjUyMzEwNSwgLTEzLjAxMDI2NjY2NjY2NjY2Nl0sIFstMzguNTIzMDI1LCAtMTMuMDEwMjZdLCBbLTM4LjUyMjkzNSwgLTEzLjAxMDI0NV0sIFstMzguNTIyODYsIC0xMy4wMTAyM10sIFstMzguNTIyNzY1LCAtMTMuMDEwMTk1XSwgWy0zOC41MjI2OTUsIC0xMy4wMTAxNjVdLCBbLTM4LjUyMjYwNjY2NjY2NjY3LCAtMTMuMDEwMTRdLCBbLTM4LjUyMjUzNSwgLTEzLjAxMDExNV0sIFstMzguNTIyNDU1LCAtMTMuMDEwMV0sIFstMzguNTIyMzcxNjY2NjY2NjY1LCAtMTMuMDEwMDhdLCBbLTM4LjUyMjI5NSwgLTEzLjAxMDA2NV0sIFstMzguNTIyMjEsIC0xMy4wMTAwNF0sIFstMzguNTIyMTMsIC0xMy4wMTAwMjE2NjY2NjY2NjddLCBbLTM4LjUyMjA2LCAtMTMuMDA5OTk2NjY2NjY2NjY2XSwgWy0zOC41MjE5OCwgLTEzLjAwOTk2NV0sIFstMzguNTIxODk1LCAtMTMuMDA5OTM2NjY2NjY2NjY2XSwgWy0zOC41MjE4MiwgLTEzLjAwOTkxODMzMzMzMzMzM10sIFstMzguNTIxNzM1LCAtMTMuMDA5ODg1XSwgWy0zOC41MjE2NTUsIC0xMy4wMDk4NTE2NjY2NjY2NjZdLCBbLTM4LjUyMTU4LCAtMTMuMDA5ODI2NjY2NjY2NjY3XSwgWy0zOC41MjE1MTUsIC0xMy4wMDk3ODE2NjY2NjY2NjddLCBbLTM4LjUyMTQ0LCAtMTMuMDA5NzI2NjY2NjY2NjY3XSwgWy0zOC41MjEzOCwgLTEzLjAwOTY3XSwgWy0zOC41MjEzMywgLTEzLjAwOTYxNV0sIFstMzguNTIxMjU2NjY2NjY2NjY2LCAtMTMuMDA5NTU1XSwgWy0zOC41MjEyMDUsIC0xMy4wMDk1XSwgWy0zOC41MjExNCwgLTEzLjAwOTQ0MTY2NjY2NjY2N10sIFstMzguNTIxMDc1LCAtMTMuMDA5NDA1XSwgWy0zOC41MjEwMDE2NjY2NjY2NiwgLTEzLjAwOTM0ODMzMzMzMzMzNF0sIFstMzguNTIwOTMsIC0xMy4wMDkzXSwgWy0zOC41MjA4NTE2NjY2NjY2NjUsIC0xMy4wMDkyNTE2NjY2NjY2NjhdLCBbLTM4LjUyMDc4NjY2NjY2NjY2NiwgLTEzLjAwOTIxODMzMzMzMzMzM10sIFstMzguNTIwNzE1LCAtMTMuMDA5MTY2NjY2NjY2NjY3XSwgWy0zOC41MjA2NDUsIC0xMy4wMDkxMV0sIFstMzguNTIwNTgsIC0xMy4wMDkwNV0sIFstMzguNTIwNTIsIC0xMy4wMDg5OF0sIFstMzguNTIwNDcsIC0xMy4wMDg5MjVdLCBbLTM4LjUyMDM5NjY2NjY2NjY3LCAtMTMuMDA4ODU2NjY2NjY2NjY3XSwgWy0zOC41MjAzNCwgLTEzLjAwODhdLCBbLTM4LjUyMDI3MTY2NjY2NjY2NiwgLTEzLjAwODc0MTY2NjY2NjY2N10sIFstMzguNTIwMjA2NjY2NjY2NjcsIC0xMy4wMDg2NzVdLCBbLTM4LjUyMDE0NSwgLTEzLjAwODYxXSwgWy0zOC41MjAwNzUsIC0xMy4wMDg1NzE2NjY2NjY2NjddLCBbLTM4LjUyMDAwMTY2NjY2NjY2NiwgLTEzLjAwODUxNV0sIFstMzguNTE5OTE1LCAtMTMuMDA4NDY2NjY2NjY2NjY3XSwgWy0zOC41MTk4NSwgLTEzLjAwODQwNV0sIFstMzguNTE5Nzk2NjY2NjY2NjY0LCAtMTMuMDA4MzQ2NjY2NjY2NjY2XSwgWy0zOC41MTk3NCwgLTEzLjAwODNdLCBbLTM4LjUxOTY3NjY2NjY2NjY3LCAtMTMuMDA4MjU1XSwgWy0zOC41MTk2MDUsIC0xMy4wMDgyMTVdLCBbLTM4LjUxOTUzLCAtMTMuMDA4MTU1XSwgWy0zOC41MTk0NjUsIC0xMy4wMDgxMDMzMzMzMzMzMzNdLCBbLTM4LjUxOTM5NSwgLTEzLjAwODA2XSwgWy0zOC41MTkzMiwgLTEzLjAwODAyXSwgWy0zOC41MTkyNDE2NjY2NjY2NjYsIC0xMy4wMDc5OV0sIFstMzguNTE5MTgsIC0xMy4wMDc5NDVdLCBbLTM4LjUxOTEwODMzMzMzMzMzNSwgLTEzLjAwNzkxNV0sIFstMzguNTE5MDM2NjY2NjY2NjY1LCAtMTMuMDA3OTA1XSwgWy0zOC41MTg5NjUsIC0xMy4wMDc4OF0sIFstMzguNTE4ODcsIC0xMy4wMDc4N10sIFstMzguNTE4Nzk2NjY2NjY2NjcsIC0xMy4wMDc4Nl0sIFstMzguNTE4NzA1LCAtMTMuMDA3ODUxNjY2NjY2NjY3XSwgWy0zOC41MTg2MTUsIC0xMy4wMDc4NTMzMzMzMzMzMzNdLCBbLTM4LjUxODUyNSwgLTEzLjAwNzg4NV0sIFstMzguNTE4NDQ1LCAtMTMuMDA3OTA1XSwgWy0zOC41MTgzNywgLTEzLjAwNzkyXSwgWy0zOC41MTgyNzgzMzMzMzMzMzUsIC0xMy4wMDc5MzVdLCBbLTM4LjUxODIwNSwgLTEzLjAwNzkzXSwgWy0zOC41MTgxMTUsIC0xMy4wMDc5MV0sIFstMzguNTE4MDI1LCAtMTMuMDA3OTA4MzMzMzMzMzMzXSwgWy0zOC41MTc5MzUsIC0xMy4wMDc5MTE2NjY2NjY2NjddLCBbLTM4LjUxNzg1LCAtMTMuMDA3OTE1XSwgWy0zOC41MTc3NTE2NjY2NjY2NywgLTEzLjAwNzkxNV0sIFstMzguNTE3NjczMzMzMzMzMzM1LCAtMTMuMDA3OTNdLCBbLTM4LjUxNzU4LCAtMTMuMDA3OTM1XSwgWy0zOC41MTc1MSwgLTEzLjAwNzkwNjY2NjY2NjY2N10sIFstMzguNTE3NDI1LCAtMTMuMDA3ODc1XSwgWy0zOC41MTczMzY2NjY2NjY2NjUsIC0xMy4wMDc4NzVdLCBbLTM4LjUxNzI1LCAtMTMuMDA3OV0sIFstMzguNTE3MTYsIC0xMy4wMDc5MTE2NjY2NjY2NjddLCBbLTM4LjUxNzA2LCAtMTMuMDA3OTI1XSwgWy0zOC41MTY5NywgLTEzLjAwNzldLCBbLTM4LjUxNjg5LCAtMTMuMDA3ODhdLCBbLTM4LjUxNjgsIC0xMy4wMDc4NjVdLCBbLTM4LjUxNjcwNSwgLTEzLjAwNzg2MTY2NjY2NjY2N10sIFstMzguNTE2NjIsIC0xMy4wMDc4MzY2NjY2NjY2NjZdLCBbLTM4LjUxNjUzLCAtMTMuMDA3ODQ1XSwgWy0zOC41MTY0NSwgLTEzLjAwNzg3NV0sIFstMzguNTE2MzcsIC0xMy4wMDc5MTVdLCBbLTM4LjUxNjI3NjY2NjY2NjY3LCAtMTMuMDA3OTRdLCBbLTM4LjUxNjIwNSwgLTEzLjAwNzk2NV0sIFstMzguNTE2MTQ1LCAtMTMuMDA4MDE1XSwgWy0zOC41MTYwNzUsIC0xMy4wMDgwNl0sIFstMzguNTE1OTk2NjY2NjY2NjY2LCAtMTMuMDA4MDk1XSwgWy0zOC41MTU5NSwgLTEzLjAwODE1MTY2NjY2NjY2N10sIFstMzguNTE1OTEsIC0xMy4wMDgyMl0sIFstMzguNTE1ODU2NjY2NjY2NjY0LCAtMTMuMDA4Mjk1XSwgWy0zOC41MTU4MiwgLTEzLjAwODM2XSwgWy0zOC41MTU3NjUsIC0xMy4wMDg0MV0sIFstMzguNTE1NzEsIC0xMy4wMDg0OV0sIFstMzguNTE1Njc1LCAtMTMuMDA4NTUxNjY2NjY2NjY3XSwgWy0zOC41MTU2MzE2NjY2NjY2NjQsIC0xMy4wMDg2MjE2NjY2NjY2NjddLCBbLTM4LjUxNTU2LCAtMTMuMDA4NjYxNjY2NjY2NjY3XSwgWy0zOC41MTU1MDE2NjY2NjY2NjUsIC0xMy4wMDg3MjVdLCBbLTM4LjUxNTQ1LCAtMTMuMDA4NzkxNjY2NjY2NjY3XSwgWy0zOC41MTU0MDUsIC0xMy4wMDg4NTE2NjY2NjY2NjddLCBbLTM4LjUxNTM3LCAtMTMuMDA4OTJdLCBbLTM4LjUxNTMxNSwgLTEzLjAwODk4XSwgWy0zOC41MTUyOCwgLTEzLjAwOTA1NV0sIFstMzguNTE1MiwgLTEzLjAwOTFdLCBbLTM4LjUxNTExLCAtMTMuMDA5MTRdLCBbLTM4LjUxNTAzLCAtMTMuMDA5MTg1XSwgWy0zOC41MTQ5NjUsIC0xMy4wMDkyMzVdLCBbLTM4LjUxNDkwNjY2NjY2NjY3LCAtMTMuMDA5MjldLCBbLTM4LjUxNDgzNSwgLTEzLjAwOTMyNV0sIFstMzguNTE0NzUsIC0xMy4wMDkzNjVdLCBbLTM4LjUxNDY4MTY2NjY2NjY3LCAtMTMuMDA5NDE1XSwgWy0zOC41MTQ2MTE2NjY2NjY2NywgLTEzLjAwOTQ0MzMzMzMzMzMzM10sIFstMzguNTE0NTQsIC0xMy4wMDk0ODVdLCBbLTM4LjUxNDQ1MTY2NjY2NjY2NiwgLTEzLjAwOTUxXSwgWy0zOC41MTQzOCwgLTEzLjAwOTU0NV0sIFstMzguNTE0MzA1LCAtMTMuMDA5NTk1XSwgWy0zOC41MTQyMzUsIC0xMy4wMDk2M10sIFstMzguNTE0MTYsIC0xMy4wMDk2NDVdLCBbLTM4LjUxNDA3NjY2NjY2NjY3LCAtMTMuMDA5NjY1XSwgWy0zOC41MTM5ODUsIC0xMy4wMDk2OTVdLCBbLTM4LjUxMzg4NjY2NjY2NjY2NCwgLTEzLjAwOTcxXSwgWy0zOC41MTM4LCAtMTMuMDA5NzQ1XSwgWy0zOC41MTM3MTUsIC0xMy4wMDk3NjVdLCBbLTM4LjUxMzYzNSwgLTEzLjAwOTc4NV0sIFstMzguNTEzNTUsIC0xMy4wMDk4XSwgWy0zOC41MTM0NTY2NjY2NjY2NywgLTEzLjAwOTgxNV0sIFstMzguNTEzMzcxNjY2NjY2NjY0LCAtMTMuMDA5ODRdLCBbLTM4LjUxMzMsIC0xMy4wMDk4NTVdLCBbLTM4LjUxMzIxNjY2NjY2NjY2NSwgLTEzLjAwOTg5NV0sIFstMzguNTEzMTQ1LCAtMTMuMDA5OV0sIFstMzguNTEzMDU4MzMzMzMzMzMsIC0xMy4wMDk5MDVdLCBbLTM4LjUxMjk3LCAtMTMuMDA5OTFdLCBbLTM4LjUxMjg4NSwgLTEzLjAwOTkwMTY2NjY2NjY2Nl0sIFstMzguNTEyOCwgLTEzLjAwOTkwNV0sIFstMzguNTEyNzEsIC0xMy4wMDk5MTgzMzMzMzMzMzNdLCBbLTM4LjUxMjYzMTY2NjY2NjY2NCwgLTEzLjAwOTk1NV0sIFstMzguNTEyNTU2NjY2NjY2NjcsIC0xMy4wMDk5OV0sIFstMzguNTEyNDc2NjY2NjY2NjY0LCAtMTMuMDEwMDM2NjY2NjY2NjY2XSwgWy0zOC41MTI0MDE2NjY2NjY2NywgLTEzLjAxMDA3XSwgWy0zOC41MTIzMiwgLTEzLjAxMDA2ODMzMzMzMzMzM10sIFstMzguNTEyMjQsIC0xMy4wMTAwNjY2NjY2NjY2NjddLCBbLTM4LjUxMjE3NSwgLTEzLjAxMDA0XSwgWy0zOC41MTIxLCAtMTMuMDEwMDI1XSwgWy0zOC41MTIwMSwgLTEzLjAxMDAyNV0sIFstMzguNTExOTM1LCAtMTMuMDEwMDJdLCBbLTM4LjUxMTg0LCAtMTMuMDEwMDRdLCBbLTM4LjUxMTc1NjY2NjY2NjY2LCAtMTMuMDEwMDZdLCBbLTM4LjUxMTY3ODMzMzMzMzMzNiwgLTEzLjAxMDA2XSwgWy0zOC41MTE1OSwgLTEzLjAxMDA2XSwgWy0zOC41MTE1MTUsIC0xMy4wMTAxMl0sIFstMzguNTExNDQ1LCAtMTMuMDEwMTZdLCBbLTM4LjUxMTM2LCAtMTMuMDEwMTk1XSwgWy0zOC41MTEyOCwgLTEzLjAxMDIyXSwgWy0zOC41MTExODY2NjY2NjY2NywgLTEzLjAxMDIzODMzMzMzMzMzNF0sIFstMzguNTExMTI1LCAtMTMuMDEwMjk2NjY2NjY2NjY3XSwgWy0zOC41MTEwNSwgLTEzLjAxMDMyNjY2NjY2NjY2Nl0sIFstMzguNTEwOTcxNjY2NjY2NjcsIC0xMy4wMTAzMzY2NjY2NjY2NjddLCBbLTM4LjUxMDg5NSwgLTEzLjAxMDM1NjY2NjY2NjY2N10sIFstMzguNTEwODIsIC0xMy4wMTAzNzVdLCBbLTM4LjUxMDczMTY2NjY2NjY2NSwgLTEzLjAxMDM3NjY2NjY2NjY2Nl0sIFstMzguNTEwNjQ2NjY2NjY2NjY2LCAtMTMuMDEwMzk1XSwgWy0zOC41MTA1NiwgLTEzLjAxMDQxXSwgWy0zOC41MTA0OCwgLTEzLjAxMDQyXSwgWy0zOC41MTA0MDY2NjY2NjY2NywgLTEzLjAxMDQ0XSwgWy0zOC41MTAzMjUsIC0xMy4wMTA0Nl0sIFstMzguNTEwMjM2NjY2NjY2NjY0LCAtMTMuMDEwNDk1XSwgWy0zOC41MTAxNiwgLTEzLjAxMDUyMzMzMzMzMzMzM10sIFstMzguNTEwMDY2NjY2NjY2NjcsIC0xMy4wMTA1MjE2NjY2NjY2NjddLCBbLTM4LjUwOTk4NSwgLTEzLjAxMDUxNV0sIFstMzguNTA5ODksIC0xMy4wMTA1Ml0sIFstMzguNTA5ODE1LCAtMTMuMDEwNTIxNjY2NjY2NjY3XSwgWy0zOC41MDk3MzUsIC0xMy4wMTA1M10sIFstMzguNTA5NjYsIC0xMy4wMTA1MzY2NjY2NjY2NjddLCBbLTM4LjUwOTU4LCAtMTMuMDEwNTRdLCBbLTM4LjUwOTUwMTY2NjY2NjY2NSwgLTEzLjAxMDU0XSwgWy0zOC41MDk0MjUsIC0xMy4wMTA1NTVdLCBbLTM4LjUwOTM2MTY2NjY2NjY2LCAtMTMuMDEwNV0sIFstMzguNTA5MzUsIC0xMy4wMTA0MjVdLCBbLTM4LjUwOTI4LCAtMTMuMDEwMzUxNjY2NjY2NjY3XSwgWy0zOC41MDkyMiwgLTEzLjAxMDMwNV0sIFstMzguNTA5MjE1LCAtMTMuMDEwMjIxNjY2NjY2NjY2XSwgWy0zOC41MDkyMTUsIC0xMy4wMTAxM10sIFstMzguNTA5MjI1LCAtMTMuMDEwMDUxNjY2NjY2NjY3XSwgWy0zOC41MDkyMywgLTEzLjAwOTk3NjY2NjY2NjY2N10sIFstMzguNTA5MjE1LCAtMTMuMDA5OTA1XSwgWy0zOC41MDkyMywgLTEzLjAwOTgyXSwgWy0zOC41MDkxNjY2NjY2NjY2NjUsIC0xMy4wMDk3NV0sIFstMzguNTA5MTMsIC0xMy4wMDk2NjVdLCBbLTM4LjUwOTEzNjY2NjY2NjY3LCAtMTMuMDA5NThdLCBbLTM4LjUwOTE0MTY2NjY2NjY2NSwgLTEzLjAwOTQ5NV0sIFstMzguNTA5MTU1LCAtMTMuMDA5NDAxNjY2NjY2NjY3XSwgWy0zOC41MDkxNiwgLTEzLjAwOTMyNjY2NjY2NjY2Nl0sIFstMzguNTA5MTQ1LCAtMTMuMDA5MjVdLCBbLTM4LjUwOTEyNSwgLTEzLjAwOTE2NV0sIFstMzguNTA5MTIsIC0xMy4wMDkwOF0sIFstMzguNTA5MTIsIC0xMy4wMDg5OTE2NjY2NjY2NjddLCBbLTM4LjUwOTEzLCAtMTMuMDA4OTA1XSwgWy0zOC41MDkxNCwgLTEzLjAwODgyXSwgWy0zOC41MDkxNSwgLTEzLjAwODczMTY2NjY2NjY2Nl0sIFstMzguNTA5MTU2NjY2NjY2NjcsIC0xMy4wMDg2NDY2NjY2NjY2NjddLCBbLTM4LjUwOTE2LCAtMTMuMDA4NTczMzMzMzMzMzMzXSwgWy0zOC41MDkxNTY2NjY2NjY2NywgLTEzLjAwODQ5XSwgWy0zOC41MDkxNSwgLTEzLjAwODM5NV0sIFstMzguNTA5MTQsIC0xMy4wMDgzMTVdLCBbLTM4LjUwOTE0LCAtMTMuMDA4MjRdLCBbLTM4LjUwOTEzLCAtMTMuMDA4MTU1XSwgWy0zOC41MDkxNDUsIC0xMy4wMDgwN10sIFstMzguNTA5MTUxNjY2NjY2NjcsIC0xMy4wMDc5OTVdLCBbLTM4LjUwOTE0LCAtMTMuMDA3OTA1XSwgWy0zOC41MDkxMzUsIC0xMy4wMDc4Ml0sIFstMzguNTA5MTUxNjY2NjY2NjcsIC0xMy4wMDc3M10sIFstMzguNTA5MTUxNjY2NjY2NjcsIC0xMy4wMDc2NF0sIFstMzguNTA5MTU1LCAtMTMuMDA3NTZdLCBbLTM4LjUwOTE2LCAtMTMuMDA3NDhdLCBbLTM4LjUwOTE2NSwgLTEzLjAwNzM5MTY2NjY2NjY2N10sIFstMzguNTA5MTc1LCAtMTMuMDA3Mjk1XSwgWy0zOC41MDkxOCwgLTEzLjAwNzIyXSwgWy0zOC41MDkxOCwgLTEzLjAwNzE0XSwgWy0zOC41MDkxOCwgLTEzLjAwNzA2NV0sIFstMzguNTA5MTgsIC0xMy4wMDY5NzVdLCBbLTM4LjUwOTE3NjY2NjY2NjY3LCAtMTMuMDA2ODk2NjY2NjY2NjY2XSwgWy0zOC41MDkxOCwgLTEzLjAwNjgxXSwgWy0zOC41MDkxODE2NjY2NjY2NiwgLTEzLjAwNjcyXSwgWy0zOC41MDkxOCwgLTEzLjAwNjY0MzMzMzMzMzMzM10sIFstMzguNTA5MTgsIC0xMy4wMDY1Nl0sIFstMzguNTA5MTcsIC0xMy4wMDY0ODVdLCBbLTM4LjUwOTE2NSwgLTEzLjAwNjQwNV0sIFstMzguNTA5MTY1LCAtMTMuMDA2MzIxNjY2NjY2NjY3XSwgWy0zOC41MDkxNzY2NjY2NjY2NywgLTEzLjAwNjIzMTY2NjY2NjY2Nl0sIFstMzguNTA5MTc1LCAtMTMuMDA2MTU1XSwgWy0zOC41MDkxNCwgLTEzLjAwNjA2NV0sIFstMzguNTA5MTEsIC0xMy4wMDU5NzY2NjY2NjY2NjddLCBbLTM4LjUwOTA5NSwgLTEzLjAwNTkwNV0sIFstMzguNTA5MDk1LCAtMTMuMDA1ODNdLCBbLTM4LjUwOTExMTY2NjY2NjY3LCAtMTMuMDA1NzQ1XSwgWy0zOC41MDkxMzUsIC0xMy4wMDU2NzE2NjY2NjY2NjZdLCBbLTM4LjUwOTE0LCAtMTMuMDA1NTldLCBbLTM4LjUwOTE0NSwgLTEzLjAwNTUwMTY2NjY2NjY2N10sIFstMzguNTA5MTIxNjY2NjY2NjY1LCAtMTMuMDA1NDE1XSwgWy0zOC41MDkwNTUsIC0xMy4wMDUzNDVdLCBbLTM4LjUwODk3NSwgLTEzLjAwNTMzXSwgWy0zOC41MDg5NDUsIC0xMy4wMDUyNl0sIFstMzguNTA4OTEsIC0xMy4wMDUxODE2NjY2NjY2NjddLCBbLTM4LjUwODg4NSwgLTEzLjAwNTExNV0sIFstMzguNTA4ODU1LCAtMTMuMDA1MDNdLCBbLTM4LjUwODgyLCAtMTMuMDA0OTQ1XSwgWy0zOC41MDg4LCAtMTMuMDA0ODY1XSwgWy0zOC41MDg3NSwgLTEzLjAwNDc5NV0sIFstMzguNTA4Njg1LCAtMTMuMDA0NzM1XSwgWy0zOC41MDg2MjUsIC0xMy4wMDQ2N10sIFstMzguNTA4NTcsIC0xMy4wMDQ2MTMzMzMzMzMzMzNdLCBbLTM4LjUwODUxMzMzMzMzMzMzLCAtMTMuMDA0NTU1XSwgWy0zOC41MDg0NSwgLTEzLjAwNDQ5NV0sIFstMzguNTA4NCwgLTEzLjAwNDQ0XSwgWy0zOC41MDgzMzUsIC0xMy4wMDQzODVdLCBbLTM4LjUwODI3MzMzMzMzMzMzNSwgLTEzLjAwNDMyNV0sIFstMzguNTA4MjE1LCAtMTMuMDA0MjZdLCBbLTM4LjUwODE2NSwgLTEzLjAwNDE5NV0sIFstMzguNTA4MSwgLTEzLjAwNDEzXSwgWy0zOC41MDgwNDUsIC0xMy4wMDQwNzVdLCBbLTM4LjUwNzk5LCAtMTMuMDA0MDAxNjY2NjY2NjY3XSwgWy0zOC41MDc5MTUsIC0xMy4wMDM5NF0sIFstMzguNTA3ODUsIC0xMy4wMDM4OV0sIFstMzguNTA3Nzk1LCAtMTMuMDAzODI1XSwgWy0zOC41MDc3MzUsIC0xMy4wMDM3NzVdLCBbLTM4LjUwNzY5LCAtMTMuMDAzNzE1XSwgWy0zOC41MDc2NCwgLTEzLjAwMzY1NV0sIFstMzguNTA3NTcsIC0xMy4wMDM2MDVdLCBbLTM4LjUwNzUwNSwgLTEzLjAwMzU0NV0sIFstMzguNTA3NDMxNjY2NjY2NjcsIC0xMy4wMDM0OTVdLCBbLTM4LjUwNzM1NjY2NjY2NjY3LCAtMTMuMDAzNDQ1XSwgWy0zOC41MDczMjUsIC0xMy4wMDMzNzVdLCBbLTM4LjUwNzMsIC0xMy4wMDMzXSwgWy0zOC41MDcyNTY2NjY2NjY2NiwgLTEzLjAwMzI0XSwgWy0zOC41MDcxOTUsIC0xMy4wMDMxNzY2NjY2NjY2NjddLCBbLTM4LjUwNzE0LCAtMTMuMDAzMTI2NjY2NjY2NjY3XSwgWy0zOC41MDcwODUwMDAwMDAwMDQsIC0xMy4wMDMwN10sIFstMzguNTA3MDA1LCAtMTMuMDAzMDI2NjY2NjY2NjY3XSwgWy0zOC41MDY5NSwgLTEzLjAwMjk2NjY2NjY2NjY2N10sIFstMzguNTA2OSwgLTEzLjAwMjkxNV0sIFstMzguNTA2ODUxNjY2NjY2NjcsIC0xMy4wMDI4Nl0sIFstMzguNTA2Nzk1LCAtMTMuMDAyNzldLCBbLTM4LjUwNjcyLCAtMTMuMDAyNzM2NjY2NjY2NjY3XSwgWy0zOC41MDY2NSwgLTEzLjAwMjY4MTY2NjY2NjY2Nl0sIFstMzguNTA2NTc1LCAtMTMuMDAyNjFdLCBbLTM4LjUwNjUsIC0xMy4wMDI1NjVdLCBbLTM4LjUwNjQzLCAtMTMuMDAyNV0sIFstMzguNTA2MzcsIC0xMy4wMDI0M10sIFstMzguNTA2MzE1LCAtMTMuMDAyMzddLCBbLTM4LjUwNjI2NSwgLTEzLjAwMjMxNV0sIFstMzguNTA2MTk1LCAtMTMuMDAyMjVdLCBbLTM4LjUwNjEzNjY2NjY2NjY3LCAtMTMuMDAyMTk1XSwgWy0zOC41MDYwODE2NjY2NjY2NywgLTEzLjAwMjEyNjY2NjY2NjY2N10sIFstMzguNTA2MDI1LCAtMTMuMDAyMDY1XSwgWy0zOC41MDU5NywgLTEzLjAwMjAwMzMzMzMzMzMzM10sIFstMzguNTA1OSwgLTEzLjAwMTk0XSwgWy0zOC41MDU4NCwgLTEzLjAwMTg3NV0sIFstMzguNTA1NzgsIC0xMy4wMDE4MDVdLCBbLTM4LjUwNTcxNSwgLTEzLjAwMTc0NV0sIFstMzguNTA1NjYsIC0xMy4wMDE2OV0sIFstMzguNTA1NTksIC0xMy4wMDE2M10sIFstMzguNTA1NTI1LCAtMTMuMDAxNTddLCBbLTM4LjUwNTQ2MTY2NjY2NjY3LCAtMTMuMDAxNTIxNjY2NjY2NjY3XSwgWy0zOC41MDUzNywgLTEzLjAwMTQ5NV0sIFstMzguNTA1MjksIC0xMy4wMDE1MV0sIFstMzguNTA1MjE1LCAtMTMuMDAxNTFdLCBbLTM4LjUwNTExMTY2NjY2NjY2NCwgLTEzLjAwMTUyMTY2NjY2NjY2N10sIFstMzguNTA1MDM1LCAtMTMuMDAxNTQ1XSwgWy0zOC41MDQ5NDUsIC0xMy4wMDE1OF0sIFstMzguNTA0ODc1LCAtMTMuMDAxNjA2NjY2NjY2NjY3XSwgWy0zOC41MDQ4MSwgLTEzLjAwMTY1NV0sIFstMzguNTA0NzQsIC0xMy4wMDE3MTE2NjY2NjY2NjddLCBbLTM4LjUwNDY4LCAtMTMuMDAxNzUxNjY2NjY2NjY3XSwgWy0zOC41MDQ2MSwgLTEzLjAwMThdLCBbLTM4LjUwNDUzNSwgLTEzLjAwMTgzNjY2NjY2NjY2Nl0sIFstMzguNTA0NDQsIC0xMy4wMDE4MjE2NjY2NjY2NjZdLCBbLTM4LjUwNDM3MTY2NjY2NjY2NCwgLTEzLjAwMTg1NV0sIFstMzguNTA0MywgLTEzLjAwMTgzNV0sIFstMzguNTA0MjIsIC0xMy4wMDE4OF0sIFstMzguNTA0MTUxNjY2NjY2NjY1LCAtMTMuMDAxOTI1XSwgWy0zOC41MDQwNTUsIC0xMy4wMDE5MjVdLCBbLTM4LjUwMzk4LCAtMTMuMDAxOTM1XSwgWy0zOC41MDM4OTUsIC0xMy4wMDE5M10sIFstMzguNTAzNzk4MzMzMzMzMzM2LCAtMTMuMDAxOTQzMzMzMzMzMzMzXSwgWy0zOC41MDM3MjE2NjY2NjY2NjQsIC0xMy4wMDE5NzVdLCBbLTM4LjUwMzYzNSwgLTEzLjAwMjAxXSwgWy0zOC41MDM1ODUsIC0xMy4wMDIwNjE2NjY2NjY2NjZdLCBbLTM4LjUwMzUxNjY2NjY2NjY3LCAtMTMuMDAyMTM1XSwgWy0zOC41MDM0NjE2NjY2NjY2NywgLTEzLjAwMjE4NjY2NjY2NjY2N10sIFstMzguNTAzMzkxNjY2NjY2NjY2LCAtMTMuMDAyMjQ1XSwgWy0zOC41MDMzMzE2NjY2NjY2NywgLTEzLjAwMjI4ODMzMzMzMzMzM10sIFstMzguNTAzMjcxNjY2NjY2NjcsIC0xMy4wMDIzNDVdLCBbLTM4LjUwMzIwNSwgLTEzLjAwMjQxXSwgWy0zOC41MDMxNDUsIC0xMy4wMDI0NjY2NjY2NjY2NjddLCBbLTM4LjUwMzA3LCAtMTMuMDAyNTJdLCBbLTM4LjUwMzAxNSwgLTEzLjAwMjU5XSwgWy0zOC41MDI5NjY2NjY2NjY2NjYsIC0xMy4wMDI2NTVdLCBbLTM4LjUwMjkyLCAtMTMuMDAyNzE2NjY2NjY2NjY2XSwgWy0zOC41MDI4ODUsIC0xMy4wMDI4XSwgWy0zOC41MDI4MzUsIC0xMy4wMDI4OF0sIFstMzguNTAyNzk1LCAtMTMuMDAyOTVdLCBbLTM4LjUwMjc3NjY2NjY2NjY3LCAtMTMuMDAzMDIxNjY2NjY2NjY3XSwgWy0zOC41MDI3NiwgLTEzLjAwMzEwMTY2NjY2NjY2Nl0sIFstMzguNTAyNzU2NjY2NjY2NjcsIC0xMy4wMDMxOV0sIFstMzguNTAyNzU1LCAtMTMuMDAzMjc1XSwgWy0zOC41MDI3NDMzMzMzMzMzMzUsIC0xMy4wMDMzNjY2NjY2NjY2NjddLCBbLTM4LjUwMjczNSwgLTEzLjAwMzQ0NV0sIFstMzguNTAyNzIsIC0xMy4wMDM1MzMzMzMzMzMzMzNdLCBbLTM4LjUwMjcwMTY2NjY2NjY3LCAtMTMuMDAzNjE1XSwgWy0zOC41MDI2OCwgLTEzLjAwMzY4NV0sIFstMzguNTAyNjYsIC0xMy4wMDM3N10sIFstMzguNTAyNjQ1LCAtMTMuMDAzODY1XSwgWy0zOC41MDI2MjUsIC0xMy4wMDM5NTY2NjY2NjY2NjddLCBbLTM4LjUwMjU5MTY2NjY2NjY3LCAtMTMuMDA0MDQ1XSwgWy0zOC41MDI1NjUsIC0xMy4wMDQxMjE2NjY2NjY2NjZdXSwgInR5cGUiOiAiTGluZVN0cmluZyJ9LCAicHJvcGVydGllcyI6IHsiY29sb3IiOiAiI0ZGOEMwMCIsICJvcGFjaXR5IjogMC41LCAic3R5bGUiOiB7fSwgIndlaWdodCI6IDUuMH0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0pCiAgICAgICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iYWFlOGVmNDA5ZGY0YTNhODQ5ZTQwNDljYWQyODFmYSk7CiAgICAgICAgICAgICAgICBnZW9fanNvbl8yZTZmYzg4NmEzZTY0NjkyOGQxNzBkMDI1YmM5M2RjNi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAg\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;\"></iframe></div></div>"
      ],
      "text/plain": [
       "<folium.folium.Map at 0x7f8b564ef190>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import folium\n",
    "\n",
    "from glob import glob\n",
    "import folium\n",
    "\n",
    "lon, lat = -38.51386097, -13.00868051\n",
    "zoom_start = 14\n",
    "\n",
    "mapa = folium.Map(location=[lat, lon], tiles=\"Cartodb Positron\",\n",
    "                  zoom_start=zoom_start)\n",
    "\n",
    "line_string = gj['features'][0]  # The first geometry is a lineString.\n",
    "gjson = folium.features.GeoJson(line_string)\n",
    "\n",
    "mapa.add_children(gjson)\n",
    "mapa"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'color': '#FF8C00', 'opacity': 0.5, 'style': {}, 'weight': 5.0}"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "line_string['properties']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<font color=\"#FF8C00\">This should be darkorange!</font>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.display import HTML\n",
    "\n",
    "HTML('<font color=\"{}\">This should be darkorange!</font>'.format(line_string['properties']['color']))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;base64,CiAgICAgICAgPCFET0NUWVBFIGh0bWw+CiAgICAgICAgPGhlYWQ+CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgLz4KICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0LzAuNy4zL2xlYWZsZXQuanMiPjwvc2NyaXB0PgogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvanF1ZXJ5LzEuMTEuMS9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4KICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIDxzY3JpcHQgc3JjPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9qcy9ib290c3RyYXAubWluLmpzIj48L3NjcmlwdD4KICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3Jhd2dpdGh1Yi5jb20vbHZvb2dkdC9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAvZGV2ZWxvcC9kaXN0L2xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLmpzIj48L3NjcmlwdD4KICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIvMC40LjAvbGVhZmxldC5tYXJrZXJjbHVzdGVyLXNyYy5qcyI+PC9zY3JpcHQ+CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5tYXJrZXJjbHVzdGVyLzAuNC4wL2xlYWZsZXQubWFya2VyY2x1c3Rlci5qcyI+PC9zY3JpcHQ+CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2xlYWZsZXQvMC43LjMvbGVhZmxldC5jc3MiIC8+CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMi4wL2Nzcy9ib290c3RyYXAubWluLmNzcyIgLz4KICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIiAvPgogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS80LjEuMC9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIC8+CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vcmF3Z2l0LmNvbS9sdm9vZ2R0L0xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLzIuMC9kZXZlbG9wL2Rpc3QvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuY3NzIiAvPgogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIvMC40LjAvTWFya2VyQ2x1c3Rlci5EZWZhdWx0LmNzcyIgLz4KICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5tYXJrZXJjbHVzdGVyLzAuNC4wL01hcmtlckNsdXN0ZXIuY3NzIiAvPgogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcHl0aG9uLXZpc3VhbGl6YXRpb24vZm9saXVtL21hc3Rlci9mb2xpdW0vdGVtcGxhdGVzL2xlYWZsZXQuYXdlc29tZS5yb3RhdGUuY3NzIiAvPgogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgPHN0eWxlPgoKICAgICAgICAgICAgaHRtbCwgYm9keSB7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAjbWFwIHsKICAgICAgICAgICAgICAgIHBvc2l0aW9uOmFic29sdXRlOwogICAgICAgICAgICAgICAgdG9wOjA7CiAgICAgICAgICAgICAgICBib3R0b206MDsKICAgICAgICAgICAgICAgIHJpZ2h0OjA7CiAgICAgICAgICAgICAgICBsZWZ0OjA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgPHN0eWxlPiAjbWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2IHsKICAgICAgICAgICAgICAgIHBvc2l0aW9uIDogcmVsYXRpdmU7CiAgICAgICAgICAgICAgICB3aWR0aCA6IDEwMC4wJTsKICAgICAgICAgICAgICAgIGhlaWdodDogMTAwLjAlOwogICAgICAgICAgICAgICAgbGVmdDogMC4wJTsKICAgICAgICAgICAgICAgIHRvcDogMC4wJTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgPC9zdHlsZT4KICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICA8L2hlYWQ+CiAgICAgICAgPGJvZHk+CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9saXVtLW1hcCIgaWQ9Im1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNiIgPjwvZGl2PgogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIDwvYm9keT4KICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgc291dGhXZXN0ID0gTC5sYXRMbmcoLTkwLCAtMTgwKTsKICAgICAgICAgICAgdmFyIG5vcnRoRWFzdCA9IEwubGF0TG5nKDkwLCAxODApOwogICAgICAgICAgICB2YXIgYm91bmRzID0gTC5sYXRMbmdCb3VuZHMoc291dGhXZXN0LCBub3J0aEVhc3QpOwoKICAgICAgICAgICAgdmFyIG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNiA9IEwubWFwKCdtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYnLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXI6Wy0xMy4wMDg2ODA1MSwtMzguNTEzODYwOTddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogMTQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfOTliZGU2MWQ2YWQxNDdlYWE4YzAzMjM3NjcyZWQ4NmIgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL2NhcnRvZGItYmFzZW1hcHMte3N9Lmdsb2JhbC5zc2wuZmFzdGx5Lm5ldC9saWdodF9hbGwve3p9L3t4fS97eX0ucG5nJywKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBtYXhab29tOiAxOCwKICAgICAgICAgICAgICAgICAgICBtaW5ab29tOiAxLAogICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0aW9uOiAnKGMpIDxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvY29weXJpZ2h0Ij5PcGVuU3RyZWV0TWFwPC9hPiBjb250cmlidXRvcnMgKGMpIDxhIGhyZWY9Imh0dHA6Ly9jYXJ0b2RiLmNvbS9hdHRyaWJ1dGlvbnMiPkNhcnRvREI8L2E+LCBDYXJ0b0RCIDxhIGhyZWYgPSJodHRwOi8vY2FydG9kYi5jb20vYXR0cmlidXRpb25zIj5hdHRyaWJ1dGlvbnM8L2E+JywKICAgICAgICAgICAgICAgICAgICBkZXRlY3RSZXRpbmE6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYpOwoKICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2JkY2MyMGYwMmEyNTQxMTY5MGVmMDBlYTk4YTA0MTA3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwNjM5LC0zOC41MDE4NDVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fMzc1NjM3MWU3ZjhiNDQ5ZWI3ODliYWU2NWVmYzYzYWYgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFszLjY3MTQ5MTY0MjUsMy4wMTA2OTcyMDA3Nl0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyNnB4IiBoZWlnaHQ9IjE3cHgiIHZpZXdCb3g9Ii0zLjY3MTQ5MTY0MjUgLTMuMDEwNjk3MjAwNzYgMjYuMCAxNy4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIDAuNzkyNDU4MjA0MDA4IC0xLjI1OTQyNjA1NzczIEwgOC45MDcwOTg2MDM0IDMuODQ2NDgxNzYyNDEgTCA5LjIzMjU4ODk1MzY5IDAuNTM1MTcxNDQyOTI5IEwgMTkuNDQ5NDc0OTE5IDEyLjIzODAzMTY1NjIgTCA0LjQ3NzgzOTcyOTY0IDguMDkxNzI3Nzg5MzQgTCA3LjMyMjE4MjE5NTM5IDYuMzY1MzMzODc3ODcgTCAtMC43OTI0NTgyMDQwMDggMS4yNTk0MjYwNTc3MyBMIDAuNzkyNDU4MjA0MDA4IC0xLjI1OTQyNjA1NzczIiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl9iZGNjMjBmMDJhMjU0MTE2OTBlZjAwZWE5OGEwNDEwNy5zZXRJY29uKGRpdl9pY29uXzM3NTYzNzFlN2Y4YjQ0OWViNzg5YmFlNjVlZmM2M2FmKTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hYzEzZTA4NmE1Yjc0Zjc3YWYzMzRjMGRkNDZiMGE2NSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMDY2NzE2NjY3LC0zOC41MDEwNl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl8xMThmZmExNGVmNzg0MzRiYWI4ZTZlYjczNDZmMGM1OSA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzMuMjAwMDA5NTUwMDUsMy4xNDY0MzA0MDE5Nl0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyN3B4IiBoZWlnaHQ9IjExcHgiIHZpZXdCb3g9Ii0zLjIwMDAwOTU1MDA1IC0zLjE0NjQzMDQwMTk2IDI3LjAgMTEuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAwLjQ1NDMxMDM3NzQwMiAtMS40MTY5NDk1Njg5NiBMIDguNzU2MDU1NTM0MDQgMS4yNDQ4MDI4NzI5MSBMIDguMjQ3NzI2NzE5ODggLTIuMDQzNDA2NjQyNDEgTCAyMS4wNTQyOTEyNzczIDYuNzUwNTQ1ODM4NSBMIDUuNTIxODY0NDU1NDYgNi40NTgyOTA3NzEzNyBMIDcuODQ3NDM0Nzc5MjMgNC4wNzg3MDIwMTA4NCBMIC0wLjQ1NDMxMDM3NzQwMiAxLjQxNjk0OTU2ODk2IEwgMC40NTQzMTAzNzc0MDIgLTEuNDE2OTQ5NTY4OTYiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyX2FjMTNlMDg2YTViNzRmNzdhZjMzNGMwZGQ0NmIwYTY1LnNldEljb24oZGl2X2ljb25fMTE4ZmZhMTRlZjc4NDM0YmFiOGU2ZWI3MzQ2ZjBjNTkpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2NjZDYyZWRkY2VkYTQ0YjA5NjA2MWUzNGFlYTg3NWNjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwNjg5NSwtMzguNTAwMjM1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgdmFyIGRpdl9pY29uXzdhYmU5OTdlZmJjZjRmYWM5MWZmZDQ1NWRlYWM3MDNmID0gTC5kaXZJY29uKHsKICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzE0LDE0XSwKICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMy4zMjM5MTEyOTYzMSwzLjM0OTQwNTMwODAzXSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjI5cHgiIGhlaWdodD0iMTFweCIgdmlld0JveD0iLTMuMzIzOTExMjk2MzEgLTMuMzQ5NDA1MzA4MDMgMjkuMCAxMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIDAuMzcyNDU2OTUzMDAyIC0xLjQ0MDYzMTc0MjczIEwgMTAuMTMxNDA1NjI4OCAxLjA4MjQxOTkwMjI1IEwgOS40MzU2ODc3OTIwOSAtMi4xNzEzMDA1MzYyMiBMIDIyLjcyNDYzNDM2MDQgNS44NzUxNjQyMjE5OSBMIDcuMjAwOTQ2MDc0MDggNi40NzI0ODk5MjAxNiBMIDkuMzg2NDkxNzIyODIgMy45NjM2ODMzODc3MSBMIC0wLjM3MjQ1Njk1MzAwMiAxLjQ0MDYzMTc0MjczIEwgMC4zNzI0NTY5NTMwMDIgLTEuNDQwNjMxNzQyNzMiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyX2NjZDYyZWRkY2VkYTQ0YjA5NjA2MWUzNGFlYTg3NWNjLnNldEljb24oZGl2X2ljb25fN2FiZTk5N2VmYmNmNGZhYzkxZmZkNDU1ZGVhYzcwM2YpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzc0ODUwMGE0Y2I5ZTQ2ZDQ5YjQzMTE3NmRmMjIyMGM1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwNzA4NSwtMzguNDk5MzY2NjY2N10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl84NzUwNmY5MDI0NjA0NDgwODNhOTRkOWQyYTMwYzUyZiA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzMuNDYyNjk2NDY3ODksMi42NzcyODk1NzEzXSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjI2cHgiIGhlaWdodD0iMTNweCIgdmlld0JveD0iLTMuNDYyNjk2NDY3ODkgLTIuNjc3Mjg5NTcxMyAyNi4wIDEzLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gMC42MTg0MzkwNjA5MyAtMS4zNTMzOTQ2NjgyIEwgOC4xMzA5MzMxNzIyNiAyLjA3OTQ2OTMwOTAzIEwgOC4wMTQ0MTY2MjU5MiAtMS4yNDU3NTkwODgzIEwgMTkuNjkzMDQ2MTI1MSA4Ljk5ODgxNTUyNTYgTCA0LjMwMzc4MjI2MDM0IDYuODc0NjA4OTIwOTEgTCA2Ljg5NDA1NTA1MDQgNC43ODYyNTg2NDU0NCBMIC0wLjYxODQzOTA2MDkzIDEuMzUzMzk0NjY4MiBMIDAuNjE4NDM5MDYwOTMgLTEuMzUzMzk0NjY4MiIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfNzQ4NTAwYTRjYjllNDZkNDliNDMxMTc2ZGYyMjIwYzUuc2V0SWNvbihkaXZfaWNvbl84NzUwNmY5MDI0NjA0NDgwODNhOTRkOWQyYTMwYzUyZik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzVmYTIxYzdjOWJhNDI1ZGEwZTBjODYxZjI3YTBhMTAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDA3NjU1LC0zOC40OTg3N10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl8xMDFhYzM3ODJjZjQ0NmU1OWMzNWUyMzgzMGFiNWU5OCA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzMuMTk1NTYxNjYxMTIsMy41OTg5MjE2OTIzOF0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIxOXB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9Ii0zLjE5NTU2MTY2MTEyIC0zLjU5ODkyMTY5MjM4IDE5LjAgMjQuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAxLjE3NDQxODU5MjU5IC0wLjkxMzcyMDM5OTk5OSBMIDYuNzM0MjMwMjYyOTYgNi4yMzIzODkyODE5MSBMIDguMTY5MzQ3MDQ4MTQgMy4yMzA1Mjk4ODkzMiBMIDEzLjc4MzI5NTI3MDQgMTcuNzE1ODc3MDE1MiBMIDEuMTIyODM1NDkyNTkgOC43MTI4NTIyODkzMSBMIDQuMzg1MzkzMDc3NzcgOC4wNTk4MzAwODE5IEwgLTEuMTc0NDE4NTkyNTkgMC45MTM3MjAzOTk5OTkgTCAxLjE3NDQxODU5MjU5IC0wLjkxMzcyMDM5OTk5OSIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfYzVmYTIxYzdjOWJhNDI1ZGEwZTBjODYxZjI3YTBhMTAuc2V0SWNvbihkaXZfaWNvbl8xMDFhYzM3ODJjZjQ0NmU1OWMzNWUyMzgzMGFiNWU5OCk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOTUzZTI2YTRmNjcxNDE3MjgyZDdjMmZmZjMxMTU0NjQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDA4Mzc1LC0zOC40OTgzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgdmFyIGRpdl9pY29uXzE1MDZlMzBhYjhhMTQ0NWY4NDYwYzg3MWJlZDIzMDAwID0gTC5kaXZJY29uKHsKICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzE0LDE0XSwKICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMy4zMTAzMjQ4MzkwNiwzLjUzMjExMDI1MTU1XSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjIxcHgiIGhlaWdodD0iMjVweCIgdmlld0JveD0iLTMuMzEwMzI0ODM5MDYgLTMuNTMyMTEwMjUxNTUgMjEuMCAyNS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIDEuMTQ5MjQyNTIxNDYgLTAuOTQ1MTkwNzg4NjEzIEwgOC4xNzExMTgyNjcyNyA3LjU5MjU5NjgwMzc5IEwgOS41MjQ0MTI1MjE1NyA0LjU1Mjk3MjcwNTExIEwgMTUuNTI4NTkyODQzMyAxOC44ODA5NzAyODU1IEwgMi42Mjg5NTczOTI4NCAxMC4yMjQxMTc0MzY4IEwgNS44NzI2MzMyMjQzNiA5LjQ4Mjk3ODM4MTAyIEwgLTEuMTQ5MjQyNTIxNDYgMC45NDUxOTA3ODg2MTMgTCAxLjE0OTI0MjUyMTQ2IC0wLjk0NTE5MDc4ODYxMyIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfOTUzZTI2YTRmNjcxNDE3MjgyZDdjMmZmZjMxMTU0NjQuc2V0SWNvbihkaXZfaWNvbl8xNTA2ZTMwYWI4YTE0NDVmODQ2MGM4NzFiZWQyMzAwMCk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNTk1NWRmZDA1MzA2NDA2YTg4MTdhYTNiNGE5ODNjNWEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDA4ODk1LC0zOC40OTc2OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl81ZmM5MTg3ZDE3NWU0MGE4OTUwZjM3M2FhNzUzMTZjNiA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzMuMzI4NTg3NzA3MywzLjQ2MjkxODU4OThdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjFweCIgaGVpZ2h0PSIyMXB4IiB2aWV3Qm94PSItMy4zMjg1ODc3MDczIC0zLjQ2MjkxODU4OTggMjEuMCAyMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIDEuMDQzNDc1MTYwOSAtMS4wNjA4MDMyNzUxNSBMIDYuODgyNTQ1NDMwODMgNC42ODI4ODYzNzIyNyBMIDcuOTA4NjkyNDc3NDkgMS41MTc4MDQ2NjEwNSBMIDE1LjM4NjI5OTc0NjMgMTUuMTM0OTY2MDk1NiBMIDEuNjQ3ODQxNTEyMDYgNy44ODI2MjQzMTE5NyBMIDQuNzk1NTk1MTA5MDMgNi44MDQ0OTI5MjI1NyBMIC0xLjA0MzQ3NTE2MDkgMS4wNjA4MDMyNzUxNSBMIDEuMDQzNDc1MTYwOSAtMS4wNjA4MDMyNzUxNSIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfNTk1NWRmZDA1MzA2NDA2YTg4MTdhYTNiNGE5ODNjNWEuc2V0SWNvbihkaXZfaWNvbl81ZmM5MTg3ZDE3NWU0MGE4OTUwZjM3M2FhNzUzMTZjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzdhNDkwMzMzNmIxNDZmZmI0Yjk1MWQxNTY2YTliMDQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDA5NTMsLTM4LjQ5NzIzNjY2NjddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fOWNhNGFlZjA1N2UwNDFmM2IzY2ZiZTc0YTI3YTE2ODcgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFszLjExNTc3Mzk3MDcxLDMuMTIxNjE5NjUxNDJdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMTJweCIgaGVpZ2h0PSIyNnB4IiB2aWV3Qm94PSItMy4xMTU3NzM5NzA3MSAtMy4xMjE2MTk2NTE0MiAxMi4wIDI2LjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gMS4zOTM4MDI5NjUzNSAtMC41MjEwMTU2MzY3OTggTCA0LjI4NDY3MDg5NTQ3IDcuMjEyNTM0MDA5MDMgTCA2LjU1MTI2MTE4OTM2IDQuNzc2Njk5NzcwMDkgTCA3LjU4MDAwODY2MTMgMjAuMjc3Nzc2MzM0IEwgLTEuODExNTU2NjAyNzIgNy45MDI3OTM1OTA4OCBMIDEuNDk3MDY0OTY0NzcgOC4yNTQ1NjUyODI2MyBMIC0xLjM5MzgwMjk2NTM1IDAuNTIxMDE1NjM2Nzk4IEwgMS4zOTM4MDI5NjUzNSAtMC41MjEwMTU2MzY3OTgiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyXzc3YTQ5MDMzMzZiMTQ2ZmZiNGI5NTFkMTU2NmE5YjA0LnNldEljb24oZGl2X2ljb25fOWNhNGFlZjA1N2UwNDFmM2IzY2ZiZTc0YTI3YTE2ODcpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzk3ZDZiMGZmY2VlZTRkNzViZWUxNjNiMjJmNTNmNjEzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAxMDI5NSwtMzguNDk3MDJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fMmZhMWIyNjA3MzFhNDczOWE1ZmQ0NDk4MTNhMzc5MDAgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFs4Ljk5MDk1MjcxMDQ2LDIuODQ1Mjk0NzU2MjNdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMTRweCIgaGVpZ2h0PSIyMHB4IiB2aWV3Qm94PSItOC45OTA5NTI3MTA0NiAtMi44NDUyOTQ3NTYyMyAxNC4wIDIwLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gMS4zMzkyODM0NzY2NyAwLjY0ODQzMTc3Njc3MyBMIC0wLjA2Njg2NzM0MTcwMzEgMy41NTI3MjI3NTEwOSBMIDMuMjYwMTMxMzg4NCAzLjUxMDMwMjgyNzk3IEwgLTcuMjQyMDM2ODA5MzIgMTQuOTU3ODQyMjY0MyBMIC00Ljc3NTU2OTQ3MTYgLTAuMzgwMjg3ODMyNjYzIEwgLTIuNzQ1NDM0Mjk1MDQgMi4yNTU4NTkxOTc1NSBMIC0xLjMzOTI4MzQ3NjY3IC0wLjY0ODQzMTc3Njc3MyBMIDEuMzM5MjgzNDc2NjcgMC42NDg0MzE3NzY3NzMiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyXzk3ZDZiMGZmY2VlZTRkNzViZWUxNjNiMjJmNTNmNjEzLnNldEljb24oZGl2X2ljb25fMmZhMWIyNjA3MzFhNDczOWE1ZmQ0NDk4MTNhMzc5MDApOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2QyYmU4OGFlNTUwNTQ0ZmY4YmFhNzI4YmQwYWQzNGZhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAxMDQ0LC0zOC40OTc4Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl84ODNhNmI1YWQyZDk0NTZmOTlhOWM4MmEwYjVhMWU1NSA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzI0LjcwNTg3NTE0OTMsNS4xNjQ3NDc1OTAxNF0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyOHB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9Ii0yNC43MDU4NzUxNDkzIC01LjE2NDc0NzU5MDE0IDI4LjAgMTIuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAwLjE4MDgxMTU3NjIzNyAxLjQ3Njk3MzY1Mzc2IEwgLTguMTE4OTg3NDE0NyAyLjQ5MzAzNzYzOTg2IEwgLTYuMjgwMzkwNjA4NDcgNS4yNjYxNzMzNzExNCBMIC0yMS41OTI1NjE4NzQ4IDIuNjQzMzY4MTcyMjMgTCAtNy4zNjUyNjAwNjU4OSAtMy41OTU2Njg1NTE0MiBMIC04LjQ4MDYxMDU2NzE4IC0wLjQ2MDkwOTY2NzY2MSBMIC0wLjE4MDgxMTU3NjIzNyAtMS40NzY5NzM2NTM3NiBMIDAuMTgwODExNTc2MjM3IDEuNDc2OTczNjUzNzYiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyX2QyYmU4OGFlNTUwNTQ0ZmY4YmFhNzI4YmQwYWQzNGZhLnNldEljb24oZGl2X2ljb25fODgzYTZiNWFkMmQ5NDU2Zjk5YTljODJhMGI1YTFlNTUpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzUyNjVlOTNkOWJkNzQwZjNhYzFjMjdiMzZkYzFkZmZmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAxMDUwNSwtMzguNDk4NjhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fOTAwMGY1OTNkYjljNDA2ODk5ZTcxOTk1NGY2MGY4MzEgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFsyNS4wMTAzNjQ3NzkxLDUuMjc4NjU2NjMzMjZdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjhweCIgaGVpZ2h0PSIxMnB4IiB2aWV3Qm94PSItMjUuMDEwMzY0Nzc5MSAtNS4yNzg2NTY2MzMyNiAyOC4wIDEyLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gMC4xNDUyMDEwODgwODkgMS40ODA4OTg1OTM0MyBMIC04LjY5MjY0MjIxNzI3IDIuMzQ3NDQzMDQ4MjUgTCAtNi45MjEzNDE0NDc2NyA1LjE2NDAzOTE0NzAyIEwgLTIyLjE2NTkzMDY0NjIgMi4xNzMzNTQyNDc2MiBMIC03Ljc5MjU0Nzk3NjIgLTMuNzIxMzUyNDEzNTUgTCAtOC45ODMwNDQzOTM0NSAtMC42MTQzNTQxMzg2MDMgTCAtMC4xNDUyMDEwODgwODkgLTEuNDgwODk4NTkzNDMgTCAwLjE0NTIwMTA4ODA4OSAxLjQ4MDg5ODU5MzQzIiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl81MjY1ZTkzZDliZDc0MGYzYWMxYzI3YjM2ZGMxZGZmZi5zZXRJY29uKGRpdl9pY29uXzkwMDBmNTkzZGI5YzQwNjg5OWU3MTk5NTRmNjBmODMxKTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hZTlkNTU1OTkzMWI0NmE1YTZlMmY1MmVmZGJkZjdiNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMTA1OCwtMzguNDk5NTQ1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgdmFyIGRpdl9pY29uXzI0ZjAwNWY2NDdkYTRlZDRiYzRjYzc5NTVmNjRmODE5ID0gTC5kaXZJY29uKHsKICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzE0LDE0XSwKICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMjYuNDU1MzAwNDg4Myw0LjgxNzExOTAxMDE2XSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjMwcHgiIGhlaWdodD0iMTJweCIgdmlld0JveD0iLTI2LjQ1NTMwMDQ4ODMgLTQuODE3MTE5MDEwMTYgMzAuMCAxMi4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIDAuMjA3ODcwNjg1MTg5IDEuNDczNDA4ODk3MTYgTCAtOS42NDk5MjA5MDIyMyAyLjg2NDE2MDU3MjE5IEwgLTcuNzYwNzcwNjM0NjkgNS42MDMxMDc2ODEzMyBMIC0yMy4xMTg0NzE2NjE5IDMuMjYxNTg3ODQxNzMgTCAtOS4wMDc5OTQ3NDU4MiAtMy4yMzczNDU3MDE2NSBMIC0xMC4wNjU2NjIyNzI2IC0wLjA4MjY1NzIyMjEzNDQgTCAtMC4yMDc4NzA2ODUxODkgLTEuNDczNDA4ODk3MTYgTCAwLjIwNzg3MDY4NTE4OSAxLjQ3MzQwODg5NzE2IiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl9hZTlkNTU1OTkzMWI0NmE1YTZlMmY1MmVmZGJkZjdiNS5zZXRJY29uKGRpdl9pY29uXzI0ZjAwNWY2NDdkYTRlZDRiYzRjYzc5NTVmNjRmODE5KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hZDNhYjI5MTk0OWI0YTU4YmYwYjc0NmMzZWE2ZGM1MiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMTA3NCwtMzguNTAwMzhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fZTY0MDVmNDYwZGZkNDYxNGJhMmVjMDExODczZDQwZTIgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFsyOS4wMzQwMDUwMDAxLDMuMzk1MTUwNTY2MTRdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMzNweCIgaGVpZ2h0PSIxMXB4IiB2aWV3Qm94PSItMjkuMDM0MDA1MDAwMSAtMy4zOTUxNTA1NjYxNCAzMy4wIDExLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gMC4yODU4OTIxNjg4MzYgMS40NjAyNzcyNTcxNyBMIC0xMS45MjU1MTQ2ODU3IDMuODUxMDE4ODU5ODYgTCAtOS44OTM0NTMwOTA4NSA2LjQ4NTY4MTIwNTM2IEwgLTI1LjM1MzkwMjE2OSA0Ljk2Mzc3MTEyMjIxIEwgLTExLjYwODgwNjEwMzkgLTIuMjc1OTgyMzM3NjQgTCAtMTIuNDk3Mjk5MDIzNCAwLjkzMDQ2NDM0NTUyNiBMIC0wLjI4NTg5MjE2ODgzNiAtMS40NjAyNzcyNTcxNyBMIDAuMjg1ODkyMTY4ODM2IDEuNDYwMjc3MjU3MTciIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyX2FkM2FiMjkxOTQ5YjRhNThiZjBiNzQ2YzNlYTZkYzUyLnNldEljb24oZGl2X2ljb25fZTY0MDVmNDYwZGZkNDYxNGJhMmVjMDExODczZDQwZTIpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzczOWM3NzRhZmI4ZDRhYTRiZWI4YzEyODBiYjA0Y2ZmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAxMDg2MzMzMzMsLTM4LjUwMTI3NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl83MmM1NjFjMTY5ZjM0ODNkOWQ4NjEzMmNlOGU2OTY1NCA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzI3LjQ5MzI0NDA0NDksNi4yNDM0NjY0NDg2MV0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIzMXB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9Ii0yNy40OTMyNDQwNDQ5IC02LjI0MzQ2NjQ0ODYxIDMxLjAgMTIuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAtMC4wMzk1NzM0OTc4NzM0IDEuNDg3NDczNjc2NSBMIC0xMC42NzgzNzE5OTcxIDEuMjA0NDMzNzMwMDIgTCAtOS4yNzAwNDUzMTYzNyA0LjIxODk1NDU4MDg4IEwgLTI0LjAyNjA2MTU4NzcgLTAuNjM5MjAxNDI3MzQxIEwgLTkuMDMyNjA0MzI5MTMgLTQuNzA1ODg3NDc4MDkgTCAtMTAuNTk5MjI1MDAxNCAtMS43NzA1MTM2MjI5OCBMIDAuMDM5NTczNDk3ODczNCAtMS40ODc0NzM2NzY1IEwgLTAuMDM5NTczNDk3ODczNCAxLjQ4NzQ3MzY3NjUiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyXzczOWM3NzRhZmI4ZDRhYTRiZWI4YzEyODBiYjA0Y2ZmLnNldEljb24oZGl2X2ljb25fNzJjNTYxYzE2OWYzNDgzZDlkODYxMzJjZThlNjk2NTQpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzViMjVmYTBhMmFmYTQ2MGZhYmEyNjkwNGRkMzJmOTg4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAxMDYxNSwtMzguNTAyMTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fYzgwMDhjNWZhMTFkNGZjOWJmNzM0ZTc4OThkNjBlMDEgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFsyNi42MzE0OTI3MTMzLDcuMzE1OTUxMTI2NF0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIzMHB4IiBoZWlnaHQ9IjExcHgiIHZpZXdCb3g9Ii0yNi42MzE0OTI3MTMzIC03LjMxNTk1MTEyNjQgMzAuMCAxMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIC0wLjI5NTEzMzQyMzYzMyAxLjQ1ODQzNzYxIEwgLTEwLjcyNzMxMzc4MzggLTAuNjUyNjQ2OTQwMDM5IEwgLTkuODU5MTQzMDIxMDkgMi41NTkzNjE3MDM1OSBMIC0yMy41NTgxMTg4NTAyIC00Ljc2NzI4NTM2MjczIEwgLTguMDg4MzQyNDc5MyAtNi4xOTEyNjM5NTY0IEwgLTEwLjEzNzA0NjkzNjYgLTMuNTY5NTIyMTYwMDMgTCAwLjI5NTEzMzQyMzYzMyAtMS40NTg0Mzc2MSBMIC0wLjI5NTEzMzQyMzYzMyAxLjQ1ODQzNzYxIiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl81YjI1ZmEwYTJhZmE0NjBmYWJhMjY5MDRkZDMyZjk4OC5zZXRJY29uKGRpdl9pY29uX2M4MDA4YzVmYTExZDRmYzliZjczNGU3ODk4ZDYwZTAxKTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85MjQ3MTgyYTNiMTI0OWRjYTdkNjQyOGY3MjY2NjlmOCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMTA1NywtMzguNTAyOTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fODk2MjExNDRhYzY0NDVjYzhiZTc0ZGFiYTk5YTBmMWIgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFsyNy4zODE1MzQ1MTk4LDQuNjA3NDE4NzA3ODFdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMzFweCIgaGVpZ2h0PSIxMnB4IiB2aWV3Qm94PSItMjcuMzgxNTM0NTE5OCAtNC42MDc0MTg3MDc4MSAzMS4wIDEyLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gMC4yMjEwNzA1NTczMiAxLjQ3MTQ4NjI1ODQxIEwgLTEwLjUxOTY5MjcxMzkgMy4wODUxMzgxMDc5MiBMIC04LjYwNjA2NTM0MDg5IDUuODA3MDQwMDY3NDIgTCAtMjMuOTg0MTM5NTk2OSAzLjYwMzI4Njg2NTM5IEwgLTkuOTMyNDg4Njg0ODEgLTMuMDIxODc3NDgzMDMgTCAtMTAuOTYxODMzODI4NiAwLjE0MjE2NTU5MTEwNSBMIC0wLjIyMTA3MDU1NzMyIC0xLjQ3MTQ4NjI1ODQxIEwgMC4yMjEwNzA1NTczMiAxLjQ3MTQ4NjI1ODQxIiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl85MjQ3MTgyYTNiMTI0OWRjYTdkNjQyOGY3MjY2NjlmOC5zZXRJY29uKGRpdl9pY29uXzg5NjIxMTQ0YWM2NDQ1Y2M4YmU3NGRhYmE5OWEwZjFiKTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xZDg1NzYwMTRkNzM0ZGEyOGI3MDFlOTk4NDEzN2UwMiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMTA5LC0zOC41MDM3ODVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fMDNiMDJhOGY5MjIzNGQ0MGI2MTEyZTc1ZTU3Y2MzYmEgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFsyNS4zNzgxNTM5NDU5LDIuNjg5MTcxMjkwMzddLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjlweCIgaGVpZ2h0PSIxM3B4IiB2aWV3Qm94PSItMjUuMzc4MTUzOTQ1OSAtMi42ODkxNzEyOTAzNyAyOS4wIDEzLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gMC41NTY2OTk3Mzg5NjggMS4zNzk5MzgxODcyNSBMIC05LjMzNjg2NDIwNjUgNS4zNzEyMzYxNDMwNSBMIC02Ljg0MzUyNjU0MTMyIDcuNTc0NDEyNzc4NTggTCAtMjIuMzEzMDA3NjMwNyA5LjAwMTU5NTYwNjUxIEwgLTEwLjE4MzcyNDk3NTEgLTAuNzA1MjE2MzQ0OTIyIEwgLTEwLjQ1MDI2MzY4NDQgMi42MTEzNTk3Njg1NSBMIC0wLjU1NjY5OTczODk2OCAtMS4zNzk5MzgxODcyNSBMIDAuNTU2Njk5NzM4OTY4IDEuMzc5OTM4MTg3MjUiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyXzFkODU3NjAxNGQ3MzRkYTI4YjcwMWU5OTg0MTM3ZTAyLnNldEljb24oZGl2X2ljb25fMDNiMDJhOGY5MjIzNGQ0MGI2MTEyZTc1ZTU3Y2MzYmEpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzE0ZmQ2MzIxM2U4ZTRhNDQ5YjNmMWExOWQ2ZmE1MTgwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAxMTIyNjY2NjcsLTM4LjUwNDU5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgdmFyIGRpdl9pY29uXzc5NmRhYjZhZmY5YzQ2ZGY4NWZjMzFjODE5ZDhhOTllID0gTC5kaXZJY29uKHsKICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzE0LDE0XSwKICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMjUuNDI1NTQ5MzA3OSwyLjk1NTYxMjkzODIzXSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjI5cHgiIGhlaWdodD0iMTRweCIgdmlld0JveD0iLTI1LjQyNTU0OTMwNzkgLTIuOTU1NjEyOTM4MjMgMjkuMCAxNC4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIDAuNTc4MjUzMzYyNjM4IDEuMzcxMDQ1OTY4ODEgTCAtOS41MTE2ODQ4OTY1MSA1LjYyNjU4NTc5NzQ0IEwgLTYuOTg0MTMyMjAyNDIgNy43OTA0MjQzNzI0MiBMIC0yMi40MjkzNTE5Nzg1IDkuNDU5ODIwMDkyMzYgTCAtMTAuNDUzNjUyMzc4MiAtMC40MzU4NTE0NDA0NTQgTCAtMTAuNjY4MTkxNjIxOCAyLjg4NDQ5Mzg1OTgxIEwgLTAuNTc4MjUzMzYyNjM4IC0xLjM3MTA0NTk2ODgxIEwgMC41NzgyNTMzNjI2MzggMS4zNzEwNDU5Njg4MSIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfMTRmZDYzMjEzZThlNGE0NDliM2YxYTE5ZDZmYTUxODAuc2V0SWNvbihkaXZfaWNvbl83OTZkYWI2YWZmOWM0NmRmODVmYzMxYzgxOWQ4YTk5ZSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZGIxZGI3OThkN2U0NGFlMmI2YzZlOTFkNWVmNzJkZmMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDExNTYsLTM4LjUwNTM5NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl85MjkwZTgyNzg3ZjQ0NDFjYWQzZjVjZjkzODg1N2RjYyA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzI2LjUyNzUyODQyNTMsNC4wMTU3MzE1MTgyNV0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIzMHB4IiBoZWlnaHQ9IjExcHgiIHZpZXdCb3g9Ii0yNi41Mjc1Mjg0MjUzIC00LjAxNTczMTUxODI1IDMwLjAgMTEuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAwLjI1MTg4NTc4NDgzOSAxLjQ2NjUyNTY3MzYyIEwgLTkuODU2MzI1Nzg3OSAzLjIwMjY3OTk0MDIxIEwgLTcuODg2MDI4NTQ0NiA1Ljg4Mzg0NTUwMjYyIEwgLTIzLjMwNjk0MjYzNTQgNC4wMDMxMjYzMzAxMyBMIC05LjM5NzM0MzI1MzY0IC0yLjkxNTMwODUzOTEyIEwgLTEwLjM2MDA5NzM1NzYgMC4yNjk2Mjg1OTI5NjEgTCAtMC4yNTE4ODU3ODQ4MzkgLTEuNDY2NTI1NjczNjIgTCAwLjI1MTg4NTc4NDgzOSAxLjQ2NjUyNTY3MzYyIiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl9kYjFkYjc5OGQ3ZTQ0YWUyYjZjNmU5MWQ1ZWY3MmRmYy5zZXRJY29uKGRpdl9pY29uXzkyOTBlODI3ODdmNDQ0MWNhZDNmNWNmOTM4ODU3ZGNjKTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xOGM0OWQ4MzZlYzU0MTBhODIzZmZlMzIxZDQ1ZjI2NyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMTE0MDUsLTM4LjUwNjIyNV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl9kYzYxYzhhMmE3ZDY0ZTk0YWM2ZWIwZTIzNWE4MGY2NyA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzI2LjY4NTE5Njc1NDgsNy4yMzM3MTc1OTUzMl0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIzMHB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9Ii0yNi42ODUxOTY3NTQ4IC03LjIzMzcxNzU5NTMyIDMwLjAgMTIuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAtMC4yMDU2OTcxMTEwMzYgMS40NzM3MTM5MTMzOSBMIC0xMC41MTgzNjI1MTEyIDAuMDM0Mjk5MjA3MDI3NiBMIC05LjQ1NjA0MjgxOTg5IDMuMTg3NDI0MTQ0ODQgTCAtMjMuNTc2MDkwNjIwNyAtMy4yOTA2ODg3MDU2OCBMIC04LjIyMTg2MDE1MzY3IC01LjY1NDg1OTMzNTQ5IEwgLTEwLjEwNjk2ODI4OTEgLTIuOTEzMTI4NjE5NzUgTCAwLjIwNTY5NzExMTAzNiAtMS40NzM3MTM5MTMzOSBMIC0wLjIwNTY5NzExMTAzNiAxLjQ3MzcxMzkxMzM5IiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl8xOGM0OWQ4MzZlYzU0MTBhODIzZmZlMzIxZDQ1ZjI2Ny5zZXRJY29uKGRpdl9pY29uX2RjNjFjOGEyYTdkNjRlOTRhYzZlYjBlMjM1YTgwZjY3KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xZTY5NjIzYjgyMjg0N2Q0YTI3NzI1YTFiNDM0Mzc3YyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMTEzMywtMzguNTA3MDU4MzMzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl81N2NmMDkzZTBiMjk0YWNjYjMxMmNlNTFkNDhiOWNkNyA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzI2LjczNjAxNjEwMTcsNy4xNDA2OTExNjAyXSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjMwcHgiIGhlaWdodD0iMTJweCIgdmlld0JveD0iLTI2LjczNjAxNjEwMTcgLTcuMTQwNjkxMTYwMiAzMC4wIDEyLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gLTAuMTg5MTI3NDM3MTMxIDEuNDc1OTMxODQ1NDkgTCAtMTAuNTY2OTAwNDY4NCAwLjE0NjExMzI0ODE1NCBMIC05LjQ2OTIyMzQ5NzE0IDMuMjg3MTA0Mzc2MjYgTCAtMjMuNjYxMTU5NjQwNiAtMy4wMzE5NjU1MzE1MSBMIC04LjMzNDQ1ODg3NDM1IC01LjU2ODQ4NjY5NjY2IEwgLTEwLjE4ODY0NTU5NDEgLTIuODA1NzUwNDQyODIgTCAwLjE4OTEyNzQzNzEzMSAtMS40NzU5MzE4NDU0OSBMIC0wLjE4OTEyNzQzNzEzMSAxLjQ3NTkzMTg0NTQ5IiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl8xZTY5NjIzYjgyMjg0N2Q0YTI3NzI1YTFiNDM0Mzc3Yy5zZXRJY29uKGRpdl9pY29uXzU3Y2YwOTNlMGIyOTRhY2NiMzEyY2U1MWQ0OGI5Y2Q3KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83MTVjYWM0ZDFlNzY0MjlmOTRkNTQ2MDhmYzk2MzRhMCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMTExNiwtMzguNTA3ODkzMzMzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl81MTE3MTBhNmNiZDg0MWFhODY5NGI5YzcxNzZhMzMzNiA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzI3LjI5MjQwMzMwNDUsOS4xMzMyMTAzODA3OV0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIzMXB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9Ii0yNy4yOTI0MDMzMDQ1IC05LjEzMzIxMDM4MDc5IDMxLjAgMTIuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAtMC40NTMwNTk4MzIyNDQgMS40MTczNDk5MTc0MiBMIC0xMS43MzQ3NzcwMTY2IC0yLjE4ODg4MjI3MTM4IEwgLTExLjIyMzU0Njc2MzcgMS4wOTg4NzczOTU3IEwgLTI0LjAzNzg2NjQ0MTIgLTcuNjgzNzcwNjc4OTkgTCAtOC41MDUxODc3NzAyNCAtNy40MDUyMjIxMDg4MSBMIC0xMC44Mjg2NTczNTIxIC01LjAyMzU4MjEwNjIyIEwgMC40NTMwNTk4MzIyNDQgLTEuNDE3MzQ5OTE3NDIgTCAtMC40NTMwNTk4MzIyNDQgMS40MTczNDk5MTc0MiIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfNzE1Y2FjNGQxZTc2NDI5Zjk0ZDU0NjA4ZmM5NjM0YTAuc2V0SWNvbihkaXZfaWNvbl81MTE3MTBhNmNiZDg0MWFhODY5NGI5YzcxNzZhMzMzNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMGE3M2Y4Mzc1NzFkNDdlM2EyNzUwOGE2N2Q3ZWEyMWMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDEwODY1LC0zOC41MDg3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgdmFyIGRpdl9pY29uXzliYjczNjMxZTIwYzQzMTJiNzM1MGEwNDliZjgzNWIyID0gTC5kaXZJY29uKHsKICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzE0LDE0XSwKICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMjYuMTk3NzA2MzkyOCw5LjEwMzkzOTQ1MzM3XSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjMwcHgiIGhlaWdodD0iMTJweCIgdmlld0JveD0iLTI2LjE5NzcwNjM5MjggLTkuMTAzOTM5NDUzMzcgMzAuMCAxMi4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIC0wLjQ3MDQxNDczODExMSAxLjQxMTY4NDc5OTg2IEwgLTEwLjYzMTA3OTA2MjkgLTEuOTc0MTQ2MjYzNzQgTCAtMTAuMTYwMjIzNzM5MyAxLjMxOTYzODA3NDEgTCAtMjIuODY1ODI3NTIzNiAtNy42MTk1NjM3MDY2IEwgLTcuMzM3NzM1MzEwNjQgLTcuMTUwNDcwNzI1MDkgTCAtOS42OTAyNDk1ODY3MyAtNC43OTc1MTU4NjM0NyBMIDAuNDcwNDE0NzM4MTExIC0xLjQxMTY4NDc5OTg2IEwgLTAuNDcwNDE0NzM4MTExIDEuNDExNjg0Nzk5ODYiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyXzBhNzNmODM3NTcxZDQ3ZTNhMjc1MDhhNjdkN2VhMjFjLnNldEljb24oZGl2X2ljb25fOWJiNzM2MzFlMjBjNDMxMmI3MzUwYTA0OWJmODM1YjIpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzBkNTIyNDhhM2IyZjRhYzhhYzZkMWZkNGI4YTY3MTUyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAxMDU2NSwtMzguNTA5NDk1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgdmFyIGRpdl9pY29uXzc3MjcyZjdhNWJkNzQzOTI5YWIzYjcwYThmYTExYTQ0ID0gTC5kaXZJY29uKHsKICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzE0LDE0XSwKICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMjUuNTM0ODc5NjA1NSw3LjUzMTI5NTYxMzk1XSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjI5cHgiIGhlaWdodD0iMTFweCIgdmlld0JveD0iLTI1LjUzNDg3OTYwNTUgLTcuNTMxMjk1NjEzOTUgMjkuMCAxMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIC0wLjM2NTY5MzE1MzAxMSAxLjQ0MjM2MzUxNzkyIEwgLTkuODE5ODczODU1OCAtMC45NTQ2MjUyNDkwMzUgTCAtOS4xMDg4OTY2NDM4OSAyLjI5NTc5NDkzOTgzIEwgLTIyLjQzNTQ1MjM2NDEgLTUuNjg4MjI3MTQ0MDYgTCAtNi45MTQ3Mzc3MjU4MyAtNi4zNTgzODYxNjc3MiBMIC05LjA4ODQ4NzU0OTc3IC0zLjgzOTM1MjI4NDg4IEwgMC4zNjU2OTMxNTMwMTEgLTEuNDQyMzYzNTE3OTIgTCAtMC4zNjU2OTMxNTMwMTEgMS40NDIzNjM1MTc5MiIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfMGQ1MjI0OGEzYjJmNGFjOGFjNmQxZmQ0YjhhNjcxNTIuc2V0SWNvbihkaXZfaWNvbl83NzI3MmY3YTViZDc0MzkyOWFiM2I3MGE4ZmExMWE0NCk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNTRjZmUzYjQ0MDY2NDIyMzliNjM3MTNjYTUxZTJmNGMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDEwNTE1LC0zOC41MTAzMDVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fMDE2ZjMxOWVmYWEzNGQzOWFiODAyNjdhNGRlNDVkYzggPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFsyNi40NDY1ODkzMzg0LDcuMzc2MzI0NzY2OThdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMzBweCIgaGVpZ2h0PSIxMnB4IiB2aWV3Qm94PSItMjYuNDQ2NTg5MzM4NCAtNy4zNzYzMjQ3NjY5OCAzMC4wIDEyLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gLTAuMjM5MzE1OTQyMTY1IDEuNDY4NjI5MjUyIEwgLTEwLjE1NDE0NzI5MzIgLTAuMTQ3MDExNDU3MTQ5IEwgLTkuMTY0MTQ5OTI1NTEgMy4wMjk1NjI5ODkwMSBMIC0yMy4xMzI0OTQ2MTkgLTMuNzY5NDg0MTg4NjMgTCAtNy43MjgyNTQyNzI1MiAtNS43ODIyMTI1MjI5OCBMIC05LjY3NTUxNTQwODg1IC0zLjA4NDI2OTk2MTE1IEwgMC4yMzkzMTU5NDIxNjUgLTEuNDY4NjI5MjUyIEwgLTAuMjM5MzE1OTQyMTY1IDEuNDY4NjI5MjUyIiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl81NGNmZTNiNDQwNjY0MjIzOWI2MzcxM2NhNTFlMmY0Yy5zZXRJY29uKGRpdl9pY29uXzAxNmYzMTllZmFhMzRkMzlhYjgwMjY3YTRkZTQ1ZGM4KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mNWVjMDk5NzBmZGI0NjYxOGI1YjY2ZDIwOWZjYjQ3YSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMTAzMiwtMzguNTExMTNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fOTFiYjQwMDUyNjhkNGFiMWJhMDM3MGJlODdkODY1NDYgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFsyNS41NzU0NzA2MTc0LDcuNjQ2Nzk5NjE5MjNdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjlweCIgaGVpZ2h0PSIxMXB4IiB2aWV3Qm94PSItMjUuNTc1NDcwNjE3NCAtNy42NDY3OTk2MTkyMyAyOS4wIDExLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gLTAuMzc5MzcyNTMzNzM0IDEuNDM4ODI2MDc3MjggTCAtOS45NjAyNTE2MDY4NyAtMS4wODczNDYwNzU2OSBMIC05LjI4MDE3MDU5NzA2IDIuMTY5Njc4NjEyNiBMIC0yMi41MzAzMTM3Njg2IC01Ljk0MDUyNDk1NjU3IEwgLTcuMDAzOTM1Mzk0NjYgLTYuNDYzMjc3ODUxMDYgTCAtOS4yMDE1MDY1Mzk0IC0zLjk2NDk5ODIzMDI0IEwgMC4zNzkzNzI1MzM3MzQgLTEuNDM4ODI2MDc3MjggTCAtMC4zNzkzNzI1MzM3MzQgMS40Mzg4MjYwNzcyOCIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfZjVlYzA5OTcwZmRiNDY2MThiNWI2NmQyMDlmY2I0N2Euc2V0SWNvbihkaXZfaWNvbl85MWJiNDAwNTI2OGQ0YWIxYmEwMzcwYmU4N2Q4NjU0Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzMwNmU5MGYzNWM5NDY2OThjYzJjNjA2ZmZjY2UxZGUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDEwMDY2NjY2NywtMzguNTExOTUxNjY2N10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl9hODc3NWJmNWQ0NjA0NWQ1YmFhZjU1NGRiNmQyM2RjMSA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzI1LjY0NTE3Njk5MjcsNy45NjIwODMyNTQzXSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjI5cHgiIGhlaWdodD0iMTFweCIgdmlld0JveD0iLTI1LjY0NTE3Njk5MjcgLTcuOTYyMDgzMjU0MyAyOS4wIDExLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gLTAuNDE3MzgzNjA1NjY2IDEuNDI4MjYyOTA0OTcgTCAtMTAuMjcwNzU1MDUxOSAtMS40NTEyMDM5NTUgTCAtOS42NzcyNTkzNTgyNiAxLjgyMjcwNTQ2MDYyIEwgLTIyLjcwNzczNzU5MSAtNi42MzU5MTkzMTA5NiBMIC03LjE3Mjk1NzcyNDI3IC02Ljc0Njg3MTk2OTIyIEwgLTkuNDM1OTg3ODQwNTcgLTQuMzA3NzI5NzY0OTQgTCAwLjQxNzM4MzYwNTY2NiAtMS40MjgyNjI5MDQ5NyBMIC0wLjQxNzM4MzYwNTY2NiAxLjQyODI2MjkwNDk3IiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl8zMzA2ZTkwZjM1Yzk0NjY5OGNjMmM2MDZmZmNjZTFkZS5zZXRJY29uKGRpdl9pY29uX2E4Nzc1YmY1ZDQ2MDQ1ZDViYWFmNTU0ZGI2ZDIzZGMxKTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80OThlNzZjYzQ2N2Y0ZWJjOGVjYTJiNTBjYzZhMTZkNiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMDk5OCwtMzguNTEyNzc1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgdmFyIGRpdl9pY29uX2ZlYjRjOTk4MDZhMzQ5YTBhNzdjOTFhN2NjYjRmNDNkID0gTC5kaXZJY29uKHsKICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzE0LDE0XSwKICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMjQuNzMzOTczNzc5Myw3LjE3NTU2MzY0Mzc4XSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjI4cHgiIGhlaWdodD0iMTJweCIgdmlld0JveD0iLTI0LjczMzk3Mzc3OTMgLTcuMTc1NTYzNjQzNzggMjguMCAxMi4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIC0wLjI0NTE5NDk1NDM4MiAxLjQ2NzY1OTE2ODMyIEwgLTguNzQ5NDA0OTUyNTYgMC4wNDY5MDA1NzAxNTgzIEwgLTcuNzcyMTM1NjkzIDMuMjI3NDEzODYxMTcgTCAtMjEuNzEzMTQyNTEzIC0zLjYyNzUxMzE4NzU5IEwgLTYuMzAwOTY1OTY2NzEgLTUuNTc4NTQxMTQ4NzMgTCAtOC4yNTkwMTUwNDM3OSAtMi44ODg0MTc3NjY0OCBMIDAuMjQ1MTk0OTU0MzgyIC0xLjQ2NzY1OTE2ODMyIEwgLTAuMjQ1MTk0OTU0MzgyIDEuNDY3NjU5MTY4MzIiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyXzQ5OGU3NmNjNDY3ZjRlYmM4ZWNhMmI1MGNjNmExNmQ2LnNldEljb24oZGl2X2ljb25fZmViNGM5OTgwNmEzNDlhMGE3N2M5MWE3Y2NiNGY0M2QpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2RhZmUxYWVmMDZjMTQ1MTA4MDVhMDY0YWNjN2RiYTQxID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwOTg2LC0zOC41MTM1Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl8xYzE1MTY5ZjllMmY0YzhjOGRiNGYwNjM4ZTcxYjViYiA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzI0Ljc4ODg2MTc4MDUsNi45NTI3NjI3NTU3M10sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyOHB4IiBoZWlnaHQ9IjExcHgiIHZpZXdCb3g9Ii0yNC43ODg4NjE3ODA1IC02Ljk1Mjc2Mjc1NTczIDI4LjAgMTEuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAtMC4yOTEzMTMwMTY2OTcgMS40NTkyMDU1MTIwMiBMIC05LjAyNzQ5OTk4NjE2IC0wLjI4NDg3MDI2MDQwNyBMIC04LjE1MDkyMDUwNzUzIDIuOTI0ODUzNzgwMzIgTCAtMjEuODY5MDM2NTc3NiAtNC4zNjU4OTI5MjI2OSBMIC02LjQwMzA0MjQwNzM1IC01LjgzMDM3OTI5MTc4IEwgLTguNDQ0ODczOTUyNzYgLTMuMjAzMjgxMjg0NDQgTCAwLjI5MTMxMzAxNjY5NyAtMS40NTkyMDU1MTIwMiBMIC0wLjI5MTMxMzAxNjY5NyAxLjQ1OTIwNTUxMjAyIiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl9kYWZlMWFlZjA2YzE0NTEwODA1YTA2NGFjYzdkYmE0MS5zZXRJY29uKGRpdl9pY29uXzFjMTUxNjlmOWUyZjRjOGM4ZGI0ZjA2MzhlNzFiNWJiKTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iNzBlMDViNTg5Yzk0ODc4YTBhZWNkMGIxMzQyYWYxNiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMDk2MDUsLTM4LjUxNDQyMTY2NjddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fZTlmZWFlZmNkNDEzNDFkNjk1OTM5YTE0YzNlZDU0OGEgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFsyMi43OTI1ODEwMjExLDkuMDIyMzA0NzQ3MjVdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjZweCIgaGVpZ2h0PSIxMnB4IiB2aWV3Qm94PSItMjIuNzkyNTgxMDIxMSAtOS4wMjIzMDQ3NDcyNSAyNi4wIDEyLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gLTAuNTM3MTgzNTI2MjMxIDEuMzg3NjUxOTIyOTEgTCAtOC4xNzA2NjE3ODg1MiAtMS41NjczOTY2MDM3OCBMIC03Ljg1NzM3NjkxODA3IDEuNzQ1MDkwNzY4MjYgTCAtMjAuMTIyMzQ1NTY4NCAtNy43ODk3MDAyNjI3NyBMIC00LjYzNDI3NTc2MDY5IC02LjU4MDgyMDc2OTE4IEwgLTcuMDk2Mjk0NzM2MDUgLTQuMzQyNzAwNDQ5NiBMIDAuNTM3MTgzNTI2MjMxIC0xLjM4NzY1MTkyMjkxIEwgLTAuNTM3MTgzNTI2MjMxIDEuMzg3NjUxOTIyOTEiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyX2I3MGUwNWI1ODljOTQ4NzhhMGFlY2QwYjEzNDJhZjE2LnNldEljb24oZGl2X2ljb25fZTlmZWFlZmNkNDEzNDFkNjk1OTM5YTE0YzNlZDU0OGEpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzcwZDhmODc1NDhiNzQzYWY4MDk4YTViZGY4ZjRjZTIzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwOTIxLC0zOC41MTUxNTE2NjY3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgdmFyIGRpdl9pY29uXzY0OTljOWE0ZGIzNTQ5ZTg4MzU5NjlhNjE3N2Q1MTYyID0gTC5kaXZJY29uKHsKICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzE0LDE0XSwKICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMTguNTIzNDcyMjA4MiwxNS43Mjg0ODE3NzldLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjJweCIgaGVpZ2h0PSIxOXB4IiB2aWV3Qm94PSItMTguNTIzNDcyMjA4MiAtMTUuNzI4NDgxNzc5IDIyLjAgMTkuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAtMC45NjI5OTYzNjQwNTMgMS4xMzQzNjQxNDAzMSBMIC02Ljc2MzY1OTg4MTYyIC0zLjc4OTk5NjI4MTU1IEwgLTcuNTU1Mjg4NDY5NDIgLTAuNTU4MjcxNjM2ODczIEwgLTE2LjAwOTk0MDc4MDQgLTEzLjU5MTMyNzY5ODMgTCAtMS43NzczMTAyODUxIC03LjM2NDQ1NjQ3ODczIEwgLTQuODM3NjY3MTUzNTIgLTYuMDU4NzI0NTYyMTcgTCAwLjk2Mjk5NjM2NDA1MyAtMS4xMzQzNjQxNDAzMSBMIC0wLjk2Mjk5NjM2NDA1MyAxLjEzNDM2NDE0MDMxIiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl83MGQ4Zjg3NTQ4Yjc0M2FmODA5OGE1YmRmOGY0Y2UyMy5zZXRJY29uKGRpdl9pY29uXzY0OTljOWE0ZGIzNTQ5ZTg4MzU5NjlhNjE3N2Q1MTYyKTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hNzQyYWIwNGQ4Yzg0ZDcxYjkzYThlNjJjZWI4ZWVhNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMDg2MywtMzguNTE1NzJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fZDE1NjkzMmZkNzU4NDAyM2FmMGVhY2MzNDUxODQwNDEgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFsxNy42OTgwMTYyNTI3LDE3LjY3OTA2MTUxMTFdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjFweCIgaGVpZ2h0PSIyMXB4IiB2aWV3Qm94PSItMTcuNjk4MDE2MjUyNyAtMTcuNjc5MDYxNTExMSAyMS4wIDIxLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gLTEuMDUwOTY0MTIzOTIgMS4wNTMzODQyNjUyMiBMIC03LjAxNzUwMjM2NjI5IC00Ljg5OTQ0NTkwNjc4IEwgLTguMDY2MDQ2MzQ4OTEgLTEuNzQxNzEzMjUyNDEgTCAtMTUuNDQ2OTk2NjI5NCAtMTUuNDExNTA3Mjg3MyBMIC0xLjc2MDI2MTYwNTM3IC04LjA2MjAxODg0Mzc2IEwgLTQuOTE1NTc0MTE4NDQgLTcuMDA2MjE0NDM3MjMgTCAxLjA1MDk2NDEyMzkyIC0xLjA1MzM4NDI2NTIyIEwgLTEuMDUwOTY0MTIzOTIgMS4wNTMzODQyNjUyMiIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfYTc0MmFiMDRkOGM4NGQ3MWI5M2E4ZTYyY2ViOGVlYTUuc2V0SWNvbihkaXZfaWNvbl9kMTU2OTMyZmQ3NTg0MDIzYWYwZWFjYzM0NTE4NDA0MSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNGFmOTUwNDAzZGVjNGM3ZDg4ZjgwYmEyOGFkMTc2MzUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDA4MDYsLTM4LjUxNjM2NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl8xODdiOTc2NjJiMTk0M2FiYmI1OGNjZDYzZTJlYzA3MyA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzIyLjQ3OTU3MTE4NTYsMTIuMTc1MDc5NTA4M10sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyNnB4IiBoZWlnaHQ9IjE1cHgiIHZpZXdCb3g9Ii0yMi40Nzk1NzExODU2IC0xMi4xNzUwNzk1MDgzIDI2LjAgMTUuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAtMC43MDg5NTkwMDY0ODcgMS4zMDgyNTExNzEyNyBMIC04LjYwMjc5OTg0MjY4IC0yLjk2OTUyNzk1ODI0IEwgLTguNzEyNDY2Njg0MzkgMC4zNTU5MzMzOTA3NzkgTCAtMTkuNjY4MTAxMzc3NiAtMTAuNjU4NDEwMTg3OSBMIC00LjQ1ODcxMjY0NTQ3IC03LjQ5MzU3MzYzNjgyIEwgLTcuMTg0ODgxODI5NzEgLTUuNTg2MDMwMzAwNzggTCAwLjcwODk1OTAwNjQ4NyAtMS4zMDgyNTExNzEyNyBMIC0wLjcwODk1OTAwNjQ4NyAxLjMwODI1MTE3MTI3IiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl80YWY5NTA0MDNkZWM0YzdkODhmODBiYTI4YWQxNzYzNS5zZXRJY29uKGRpdl9pY29uXzE4N2I5NzY2MmIxOTQzYWJiYjU4Y2NkNjNlMmVjMDczKTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jYTNkMTQ5MjU2YTg0ODlkOTUyNTdlZmIzZmZhOGQ3MyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMDc5NCwtMzguNTE3MTM4MzMzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl8xMTRhNDFiNDQxYmM0N2Q2YmIzZjVjZmMxY2IwMDc4ZiA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzI1LjA3ODYyMzU1MjEsNi40Mzc5NDUxOTU5OF0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyOHB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9Ii0yNS4wNzg2MjM1NTIxIC02LjQzNzk0NTE5NTk4IDI4LjAgMTIuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAtMC4wODgwMTE2NzIxMDY3IDEuNDg1Mzk0ODc4NjcgTCAtOC45NjQ3MTY1NDA0NiAwLjk1OTQzODAxMDU3OCBMIC03LjY1NTM0NTAwNjAxIDQuMDE4MjM5NDQwMDIgTCAtMjIuMjQ1MjU4Nzc2NCAtMS4zMTgwNjE5MTcwNSBMIC03LjEyNzI3NDk3MzM3IC00Ljg5NDEyOTgzMTk5IEwgLTguNzg4NjkzMTk2MjUgLTIuMDExMzUxNzQ2NzYgTCAwLjA4ODAxMTY3MjEwNjcgLTEuNDg1Mzk0ODc4NjcgTCAtMC4wODgwMTE2NzIxMDY3IDEuNDg1Mzk0ODc4NjciIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyX2NhM2QxNDkyNTZhODQ4OWQ5NTI1N2VmYjNmZmE4ZDczLnNldEljb24oZGl2X2ljb25fMTE0YTQxYjQ0MWJjNDdkNmJiM2Y1Y2ZjMWNiMDA3OGYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzMyOGM3OGU2YTBhMDQ2ZjI4YTlhYmJiZTVkMjUxYTBhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwNzk3NSwtMzguNTE3OTZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fM2E1MWQ4MTliNjVkNDcyOWI4YjRmZDcwZTZjY2Y3ZjMgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFsyNS44MDk2NzM2NTc5LDUuNzAzMjg3ODQ4MzRdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjlweCIgaGVpZ2h0PSIxMnB4IiB2aWV3Qm94PSItMjUuODA5NjczNjU3OSAtNS43MDMyODc4NDgzNCAyOS4wIDEyLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gMC4wNTY1MTQ4OTk4MzA2IDEuNDg2OTI2MzgyMiBMIC05LjIzNzAwOTg3NTk0IDEuODQwMTUzNDMzNyBMIC03LjYzNzA1MzY5NDA4IDQuNzU3NDkxMjk4MjggTCAtMjIuNjc1ODYyMjE1NiAwLjg2MTg2MTE0OTk3IEwgLTcuOTc2MTQzMDkzMDYgLTQuMTY0MDY2OTk0OTUgTCAtOS4zNTAwMzk2NzU2MSAtMS4xMzM2OTkzMzA3MSBMIC0wLjA1NjUxNDg5OTgzMDYgLTEuNDg2OTI2MzgyMiBMIDAuMDU2NTE0ODk5ODMwNiAxLjQ4NjkyNjM4MjIiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyXzMyOGM3OGU2YTBhMDQ2ZjI4YTlhYmJiZTVkMjUxYTBhLnNldEljb24oZGl2X2ljb25fM2E1MWQ4MTliNjVkNDcyOWI4YjRmZDcwZTZjY2Y3ZjMpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzNlODU2ZTI2NTk5YzQ5MDA4NjM5MTRjZjRmNDM0NWQ5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwNzk2NSwtMzguNTE4Nzg1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgdmFyIGRpdl9pY29uXzliNDJkNzIxZTE3MzQ0ZWQ5OTAzNjAzNzMxYWFhOWJlID0gTC5kaXZJY29uKHsKICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzE0LDE0XSwKICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMjUuNzI0MTY4MDA0OSw1LjUyNzkyNzg5MzczXSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjI5cHgiIGhlaWdodD0iMTJweCIgdmlld0JveD0iLTI1LjcyNDE2ODAwNDkgLTUuNTI3OTI3ODkzNzMgMjkuMCAxMi4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIDAuMDkxMjAyNzYxMDU0NiAxLjQ4NTIwMjM2MjEgTCAtOS4wODE1MTQ3NTA5MiAyLjA0ODQ3NzIyOTQyIEwgLTcuNDEzOTA2ODY2NzEgNC45Mjc2NzkxOTI1NiBMIC0yMi41Mzk1Mzg3NzA4IDEuMzg0MDk5NzE2ODIgTCAtNy45NjExMjM0MzMwNCAtMy45ODM1MzQ5ODAwMSBMIC05LjI2MzkyMDI3MzAzIC0wLjkyMTkyNzQ5NDc2OCBMIC0wLjA5MTIwMjc2MTA1NDYgLTEuNDg1MjAyMzYyMSBMIDAuMDkxMjAyNzYxMDU0NiAxLjQ4NTIwMjM2MjEiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyXzNlODU2ZTI2NTk5YzQ5MDA4NjM5MTRjZjRmNDM0NWQ5LnNldEljb24oZGl2X2ljb25fOWI0MmQ3MjFlMTczNDRlZDk5MDM2MDM3MzFhYWE5YmUpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2ExZDg1NTRlY2I3MzQ4OWZhMTkyNDUxODgzMTdmNmUxID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwODE1LC0zOC41MTk1OTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fOTZiZTZmYmY3ZjEwNDE0OGE3MzczYTEzZmQ2ZTNkMDYgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFsyMS42NzYwNzMxMDQ4LDMuMDEzNzQ5MTU0OTNdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIxNHB4IiB2aWV3Qm94PSItMjEuNjc2MDczMTA0OCAtMy4wMTM3NDkxNTQ5MyAyNS4wIDE0LjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gMC42NTQ0OTIxNDg4MDIgMS4zMzYzMzIzMDQxNyBMIC02LjMyNTE1NTQ3MjEyIDQuNzU0NzM2OTU5MjUgTCAtMy42Nzk4Mzg4NzAzNSA2Ljc3MjkwOTQxODc4IEwgLTE5LjAwNjYzODM1ODQgOS4zMDg4MzM5OTQzMSBMIC03LjYwNjc5MTc2MzE3IC0xLjI0NTA4NDQwNjIxIEwgLTcuNjM0MTM5NzY5NzMgMi4wODIwNzIzNTA5MiBMIC0wLjY1NDQ5MjE0ODgwMiAtMS4zMzYzMzIzMDQxNyBMIDAuNjU0NDkyMTQ4ODAyIDEuMzM2MzMyMzA0MTciIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyX2ExZDg1NTRlY2I3MzQ4OWZhMTkyNDUxODgzMTdmNmUxLnNldEljb24oZGl2X2ljb25fOTZiZTZmYmY3ZjEwNDE0OGE3MzczYTEzZmQ2ZTNkMDYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2VjNmJkMjkwMGFkNDRhMjhiNGY3NmU3Y2I0MjA5MmMxID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwODczLC0zOC41MjAyOTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fMTlmNzA2ODdiMTUzNGM2ZmI2NjY1ODdiMTAxMDJkYzMgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFsyMS4yODgyMzI0NTE3LDMuNDMxNjAxOTY1ODldLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyMnB4IiB2aWV3Qm94PSItMjEuMjg4MjMyNDUxNyAtMy40MzE2MDE5NjU4OSAyNS4wIDIyLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gMC45ODA0OTQ1NTM2OCAxLjExOTI3NDA2Mzk0IEwgLTcuNTAyOTk4MzI3OTEgOC41NTA4OTMyMTI5OCBMIC00LjQyMjczNTE1NjYxIDkuODA4OTQ2Nzg3MTggTCAtMTguNTU2OTU5NDU3IDE2LjI1NjA3MDEzMjIgTCAtMTAuMzA1NzAyNDc4NyAzLjA5MzMwMjQwMzU1IEwgLTkuNDYzOTg3NDM1MjcgNi4zMTIzNDUwODUxMSBMIC0wLjk4MDQ5NDU1MzY4IC0xLjExOTI3NDA2Mzk0IEwgMC45ODA0OTQ1NTM2OCAxLjExOTI3NDA2Mzk0IiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl9lYzZiZDI5MDBhZDQ0YTI4YjRmNzZlN2NiNDIwOTJjMS5zZXRJY29uKGRpdl9pY29uXzE5ZjcwNjg3YjE1MzRjNmZiNjY2NTg3YjEwMTAyZGMzKTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mZWRlOWMxOWE5ODQ0OWI5ODRiOWZlOGQ1YWIzZTI1NyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMDkyNjE2NjY3LC0zOC41MjA5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgdmFyIGRpdl9pY29uXzBhNzQwYmY2NzE5YzQxOTJiZDYzYjIwYTMxMGIyZGVmID0gTC5kaXZJY29uKHsKICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzE0LDE0XSwKICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMjQuODYwNTU2MDgyNiw0LjA0NjUwNjUyOTcyXSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjI5cHgiIGhlaWdodD0iMjZweCIgdmlld0JveD0iLTI0Ljg2MDU1NjA4MjYgLTQuMDQ2NTA2NTI5NzIgMjkuMCAyNi4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIDAuOTgwOTIzMjc2OTYgMS4xMTg4OTgzNTMxNyBMIC0xMC42NTEwMjY5ODY4IDExLjMxNjQ3NDE1NDMgTCAtNy41NzAyODIwNzk2NyAxMi41NzMzNDc1ODM2IEwgLTIxLjcwMjAzNTQ0MjIgMTkuMDI1ODg1MjkzNyBMIC0xMy40NTU4MjE3NDE0IDUuODU5OTU3NDY0NjMgTCAtMTIuNjEyODczNTQwNyA5LjA3ODY3NzQ0NzkyIEwgLTAuOTgwOTIzMjc2OTYgLTEuMTE4ODk4MzUzMTcgTCAwLjk4MDkyMzI3Njk2IDEuMTE4ODk4MzUzMTciIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyX2ZlZGU5YzE5YTk4NDQ5Yjk4NGI5ZmU4ZDVhYjNlMjU3LnNldEljb24oZGl2X2ljb25fMGE3NDBiZjY3MTljNDE5MmJkNjNiMjBhMzEwYjJkZWYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2Y5M2Y4OWQ1ZTRiMjRkN2RiNzAxY2VmYmU0MDhlYjljID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwOTgsLTM4LjUyMTU2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgdmFyIGRpdl9pY29uXzU0NjdiMDBiYzViOTRiMTc4OTU5MTlkYmYwYzMzMGEzID0gTC5kaXZJY29uKHsKICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzE0LDE0XSwKICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMjUuMTA4MTc4NDM0NCwzLjUxNjI5OTc2Njk3XSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjI5cHgiIGhlaWdodD0iMjBweCIgdmlld0JveD0iLTI1LjEwODE3ODQzNDQgLTMuNTE2Mjk5NzY2OTcgMjkuMCAyMC4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIDAuODA3MDQwOTk2MjMyIDEuMjUwMTMxNTI1MjQgTCAtOS45NjUxNzMxNDE2NyA4LjIwNDI5NDU1MDQ1IEwgLTcuMTAwOTU5NjIzOTcgOS44OTc1MTY2MDQ3IEwgLTIyLjAyMzM5Nzg2NTEgMTQuMjE3NTMxOTkxMyBMIC0xMS45NDMyMDU2MDE0IDIuMzk2NzI3NDUzMjYgTCAtMTEuNTc5MjU1MTM0MSA1LjcwNDAzMTQ5OTk3IEwgLTAuODA3MDQwOTk2MjMyIC0xLjI1MDEzMTUyNTI0IEwgMC44MDcwNDA5OTYyMzIgMS4yNTAxMzE1MjUyNCIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfZjkzZjg5ZDVlNGIyNGQ3ZGI3MDFjZWZiZTQwOGViOWMuc2V0SWNvbihkaXZfaWNvbl81NDY3YjAwYmM1Yjk0YjE3ODk1OTE5ZGJmMGMzMzBhMyk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNWE0Y2RkMDUzNDMwNDdhZDk2YWY3MGFjMjY3ZjMzYmEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDEwMDg1LC0zOC41MjIzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl83ZWZhOTQ0MzZhM2Q0MGEwOTM3ZGYwMDNlZjE5OTc3ZiA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzI0LjU2NTM4MjY3NzcsMy4xMjM1MDA1OTQzXSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjI4cHgiIGhlaWdodD0iMTFweCIgdmlld0JveD0iLTI0LjU2NTM4MjY3NzcgLTMuMTIzNTAwNTk0MyAyOC4wIDExLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gMC40NDI1NDc4OTEyNDEgMS40MjA2NjcyMjQ5MiBMIC04LjM0NDc2MDMzMTA3IDQuMTU3OTc1OTAzMDMgTCAtNi4wMzg5OTczMjM2NyA2LjU1Njc2MjQ2MTYyIEwgLTIxLjU3MzMxMzI0NjYgNi43MjAyMzk2OTkyOCBMIC04LjY5NDI4NDY3MTEyIC0xLjk2NzI0MDg4Nzg5IEwgLTkuMjI5ODU2MTEzNTUgMS4zMTY2NDE0NTMxOSBMIC0wLjQ0MjU0Nzg5MTI0MSAtMS40MjA2NjcyMjQ5MiBMIDAuNDQyNTQ3ODkxMjQxIDEuNDIwNjY3MjI0OTIiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyXzVhNGNkZDA1MzQzMDQ3YWQ5NmFmNzBhYzI2N2YzM2JhLnNldEljb24oZGl2X2ljb25fN2VmYTk0NDM2YTNkNDBhMDkzN2RmMDAzZWYxOTk3N2YpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzIwMDAxMmMyZDU5OTRmNDZiNzA4ZTMxMzZjN2EwOTQyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAxMDI2NSwtMzguNTIzMjA2NjY2N10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl8zMWY0ZTQyNGMyZjI0YzYxYjFmMGUyOTA3ZmVjZmVjZiA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzIzLjk3MTQwODEwOTUsNS45Njg0MTcyODgwMl0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyN3B4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9Ii0yMy45NzE0MDgxMDk1IC01Ljk2ODQxNzI4ODAyIDI3LjAgMTIuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAwLjAwNzc0MTExNDcxNjU2IDEuNDg3OTc5ODYzODIgTCAtNy41NTA5OTc0NDQ1OSAxLjUyNzMwMzY5MDUyIEwgLTYuMDQ3NTM1MzUxMzMgNC40OTU1MjIzMDM0NSBMIC0yMC45NTA1NTczMzM3IDAuMTA4OTkzODU5MTUgTCAtNi4wOTM5ODIwMzk2MyAtNC40MzIzNTY4Nzk0OCBMIC03LjU2NjQ3OTY3NDAyIC0xLjQ0ODY1NjAzNzEyIEwgLTAuMDA3NzQxMTE0NzE2NTYgLTEuNDg3OTc5ODYzODIgTCAwLjAwNzc0MTExNDcxNjU2IDEuNDg3OTc5ODYzODIiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyXzIwMDAxMmMyZDU5OTRmNDZiNzA4ZTMxMzZjN2EwOTQyLnNldEljb24oZGl2X2ljb25fMzFmNGU0MjRjMmYyNGM2MWIxZjBlMjkwN2ZlY2ZlY2YpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzFkNDNlNWJiNzM0NDQ4ZmRhMDIxNjBjNzE1MGQ0NWIwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAxMDA3LC0zOC41MjM5ODVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fN2Y3ZGNhYzBkNTFjNDgyZDkyYzhmOTFmZTI1MGZhZmQgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFsyMS44ODAyOTIyOTc3LDkuODQ4NDc1NzgwNTVdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIxM3B4IiB2aWV3Qm94PSItMjEuODgwMjkyMjk3NyAtOS44NDg0NzU3ODA1NSAyNS4wIDEzLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gLTAuNTg5MjEyMzgxNDU3IDEuMzY2MzcyMTE5NzIgTCAtNy42NDE2NjAyODA5IC0xLjY3NDgxMjMxNDU4IEwgLTcuNDUzNzEyOTI0MDkgMS42NDcxNDQzMDYzMSBMIC0xOS4zNDk3OTY5NzY5IC04LjM0NDA5NTg2NzQxIEwgLTMuOTE4NDM4NjM1MzUgLTYuNTUxMDg4NDExOTggTCAtNi40NjMyMzU1MTc5OCAtNC40MDc1NTY1NTQwMSBMIDAuNTg5MjEyMzgxNDU3IC0xLjM2NjM3MjExOTcyIEwgLTAuNTg5MjEyMzgxNDU3IDEuMzY2MzcyMTE5NzIiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyXzFkNDNlNWJiNzM0NDQ4ZmRhMDIxNjBjNzE1MGQ0NWIwLnNldEljb24oZGl2X2ljb25fN2Y3ZGNhYzBkNTFjNDgyZDkyYzhmOTFmZTI1MGZhZmQpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzkzNDhjZDc3Yzc5MjQ4MTlhMWFlMjYzZjc0MzZiZThmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwOTY0NjY2NjcsLTM4LjUyNDczNV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl8xYWZkYjA0YzdhYjU0ZTE1OWMyZWI1ZDY1YzM3ZDFhMiA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzIyLjcwNDMxNDc2NzYsMTEuMDc5NjY1OTMyXSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjI2cHgiIGhlaWdodD0iMTRweCIgdmlld0JveD0iLTIyLjcwNDMxNDc2NzYgLTExLjA3OTY2NTkzMiAyNi4wIDE0LjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gLTAuNjM3NDUwNjg0ODk4IDEuMzQ0NTQ0NzY0NzIgTCAtOC41ODI2MjgwMjI0OSAtMi40MjIyNzU3MDAwMiBMIC04LjUxMjk4NDYyNzU3IDAuOTA0MjY0NTE0MzA4IEwgLTIwLjA0NjA4MDIyIC05LjUwMzg3NjYyODgyIEwgLTQuNjg4MjgwNTE4MTggLTcuMTYzMDA0MDczOTggTCAtNy4zMDc3MjY2NTI2OSAtNS4xMTEzNjUyMjk0NSBMIDAuNjM3NDUwNjg0ODk4IC0xLjM0NDU0NDc2NDcyIEwgLTAuNjM3NDUwNjg0ODk4IDEuMzQ0NTQ0NzY0NzIiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyXzkzNDhjZDc3Yzc5MjQ4MTlhMWFlMjYzZjc0MzZiZThmLnNldEljb24oZGl2X2ljb25fMWFmZGIwNGM3YWI1NGUxNTljMmViNWQ2NWMzN2QxYTIpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzk4YWE0MmYxNDE5MTQ5N2FhMGEyZWI5ODAwOGU0NGQ1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwOTM0ODMzMzMsLTM4LjUyNTUxNV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl8xNjZlOTc2ZTMzMWM0Y2EyYmI5MDZjOTMwNzFmYmY5YyA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzI0LjgyODk2ODMxOTIsNy4xODMxNDQwODgxNV0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyOHB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9Ii0yNC44Mjg5NjgzMTkyIC03LjE4MzE0NDA4ODE1IDI4LjAgMTIuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAtMC4yNDA3OTY1NTE5ODEgMS40NjgzODcyMTc1MSBMIC04LjkyNDA0NDc4NDg0IDAuMDQ0NDQ2NTc3Mzc5NyBMIC03LjkzNzI1MDY3MTI5IDMuMjIyMDE3NTY0MzkgTCAtMjEuODk4NzMzMTkwNSAtMy41OTExMDk2MDc5NiBMIC02LjQ5MjQ3MTM1OTQxIC01LjU4ODMwNTc0MDY5IEwgLTguNDQyNDUxNjgwODggLTIuODkyMzI3ODU3NjUgTCAwLjI0MDc5NjU1MTk4MSAtMS40NjgzODcyMTc1MSBMIC0wLjI0MDc5NjU1MTk4MSAxLjQ2ODM4NzIxNzUxIiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl85OGFhNDJmMTQxOTE0OTdhYTBhMmViOTgwMDhlNDRkNS5zZXRJY29uKGRpdl9pY29uXzE2NmU5NzZlMzMxYzRjYTJiYjkwNmM5MzA3MWZiZjljKTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9lMTA2NzM1YWRmMDM0ZWUwOTU4ZmJlN2NkZTBhYzIyMiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMDkzNzMzMzMzLC0zOC41MjYzODE2NjY3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgdmFyIGRpdl9pY29uX2MyZjBhMjU3ODc5ODQzOTdiYTdkYjNkYTVhZjRlNjYwID0gTC5kaXZJY29uKHsKICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzE0LDE0XSwKICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMjkuMjczMjc3Nzg5OSw1LjQ1NTk0NTQ5OTVdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMzNweCIgaGVpZ2h0PSIxMnB4IiB2aWV3Qm94PSItMjkuMjczMjc3Nzg5OSAtNS40NTU5NDU0OTk1IDMzLjAgMTIuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAwLjA3NTEzNjU4ODE2NzYgMS40ODYxMDE3Nzc1MSBMIC0xMi4xNzE2Mzk1ODIxIDIuMTA1MjkyODY2MTggTCAtMTAuNTM1MjY0NjI4MyA1LjAwMjM1OTgzMzAzIEwgLTI1LjYyMTY5MjE2NzkgMS4yOTU0MjAzODIxOCBMIC0xMC45ODYwODQxNTczIC0zLjkxNDI1MDgzMjAzIEwgLTEyLjMyMTkxMjc1ODUgLTAuODY2OTEwNjg4ODQyIEwgLTAuMDc1MTM2NTg4MTY3NiAtMS40ODYxMDE3Nzc1MSBMIDAuMDc1MTM2NTg4MTY3NiAxLjQ4NjEwMTc3NzUxIiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl9lMTA2NzM1YWRmMDM0ZWUwOTU4ZmJlN2NkZTBhYzIyMi5zZXRJY29uKGRpdl9pY29uX2MyZjBhMjU3ODc5ODQzOTdiYTdkYjNkYTVhZjRlNjYwKTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83NDEyZGI1NjBkOWE0ZTkxOWQ4NzY3M2QzZWQwMDA3ZCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMDk0MjUsLTM4LjUyNzI3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgdmFyIGRpdl9pY29uXzk2MWFjZTdhOTFmMjQwNWViNTQyMDVlMzgxZjAyNmYyID0gTC5kaXZJY29uKHsKICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzE0LDE0XSwKICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMzEuMDAzODg3ODY0Miw0LjU0NjM5NTAxNjM2XSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjM1cHgiIGhlaWdodD0iMTJweCIgdmlld0JveD0iLTMxLjAwMzg4Nzg2NDIgLTQuNTQ2Mzk1MDE2MzYgMzUuMCAxMi4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIDAuMTczMjE2NTc2NDA0IDEuNDc3ODgzNjI3OTEgTCAtMTMuNzA2ODIzMDc3MSAzLjEwNDcwNTE4Nzk1IEwgLTExLjg4MjUwNjI5NjMgNS44ODcyNTU4NjczOCBMIC0yNy4xODA5OTIzMDQ3IDMuMTg1NzcwNzQ3NjcgTCAtMTIuOTIxODA1NzU0OCAtMi45ODAwNDU5MDAxMSBMIC0xNC4wNTMyNTYyMjk5IDAuMTQ4OTM3OTMyMTI0IEwgLTAuMTczMjE2NTc2NDA0IC0xLjQ3Nzg4MzYyNzkxIEwgMC4xNzMyMTY1NzY0MDQgMS40Nzc4ODM2Mjc5MSIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfNzQxMmRiNTYwZDlhNGU5MTlkODc2NzNkM2VkMDAwN2Quc2V0SWNvbihkaXZfaWNvbl85NjFhY2U3YTkxZjI0MDVlYjU0MjA1ZTM4MWYwMjZmMik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYTcyY2Q3MjAyNmJjNGE5Y2JhOTNhZjNkNTc4MzVhZmUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDA5NTc1LC0zOC41MjgxMzVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fM2IzYmFmYzRhODQxNGYyMGFkMmQ1Zjc2NDMyZGJhMjAgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFszMC45Njk3Mjc5MDc1LDQuMDkxNzQwNzMxXSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjM1cHgiIGhlaWdodD0iMTJweCIgdmlld0JveD0iLTMwLjk2OTcyNzkwNzUgLTQuMDkxNzQwNzMxIDM1LjAgMTIuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAwLjIyNTMyNjAwMzQxMiAxLjQ3MDg0MDY0MTMzIEwgLTEzLjcwMTg5MDA0MzEgMy42MDQ0MjU5MTM3NCBMIC0xMS43ODAzOTczOTQ5IDYuMzIwNzgxMTkyOTkgTCAtMjcuMTY0NzgxODE4NSA0LjE2MTUxOTMwMzEyIEwgLTEzLjEzMjM1MzQxNTQgLTIuNTA0MjYyNjU0OTkgTCAtMTQuMTUyNTQyMDQ5OSAwLjY2Mjc0NDYzMTA4MyBMIC0wLjIyNTMyNjAwMzQxMiAtMS40NzA4NDA2NDEzMyBMIDAuMjI1MzI2MDAzNDEyIDEuNDcwODQwNjQxMzMiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyX2E3MmNkNzIwMjZiYzRhOWNiYTkzYWYzZDU3ODM1YWZlLnNldEljb24oZGl2X2ljb25fM2IzYmFmYzRhODQxNGYyMGFkMmQ1Zjc2NDMyZGJhMjApOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2FmOTRmMDlhZmNlMTQ3YWY5Y2RmNzg2NjViMTE1MzBiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwOTY5LC0zOC41MjkwM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl8wYzU1MWVjMzBiZmY0ZmZlODMwNWFlZWZhY2ZiMDYzNCA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzI3LjQ0NzE5OTExNSw0Ljg2NTEyNDQxNDAyXSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjMxcHgiIGhlaWdodD0iMTJweCIgdmlld0JveD0iLTI3LjQ0NzE5OTExNSAtNC44NjUxMjQ0MTQwMiAzMS4wIDEyLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gMC4xODAxNjU5NDA0MTEgMS40NzcwNTI1NDk0OCBMIC0xMC42MDA5MjUyODQ3IDIuNzkyMDk0MDc1ODcgTCAtOC43NjM1NDA4NTQzOCA1LjU2NjAzMzIzNDQxIEwgLTI0LjA3NDU2NDE3MDQgMi45MzY1MzQ5OTAxIEwgLTkuODQ0NTM2NDk2ODUgLTMuMjk2MjgyMDYyNDUgTCAtMTAuOTYxMjU3MTY1NSAtMC4xNjIwMTEwMjMwODEgTCAtMC4xODAxNjU5NDA0MTEgLTEuNDc3MDUyNTQ5NDggTCAwLjE4MDE2NTk0MDQxMSAxLjQ3NzA1MjU0OTQ4IiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl9hZjk0ZjA5YWZjZTE0N2FmOWNkZjc4NjY1YjExNTMwYi5zZXRJY29uKGRpdl9pY29uXzBjNTUxZWMzMGJmZjRmZmU4MzA1YWVlZmFjZmIwNjM0KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kNTFlMzg2MzQ4N2Q0MjRjOTAxYzZiM2FjZWM5YzMwNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMDk3OCwtMzguNTI5ODU1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgdmFyIGRpdl9pY29uX2IwZTkyYjMyN2NkNzRlZTU4MDc3ZDdhMjIwZTliZjcxID0gTC5kaXZJY29uKHsKICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzE0LDE0XSwKICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMjQuMDMzNTgyMDc2Myw1LjEyODUwNzI5NjQ5XSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjI3cHgiIGhlaWdodD0iMTJweCIgdmlld0JveD0iLTI0LjAzMzU4MjA3NjMgLTUuMTI4NTA3Mjk2NDkgMjcuMCAxMi4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIDAuMTk3MjY1MzU2NTA4IDEuNDc0ODY2MjI0MTQgTCAtNy43OTMzNjgxMzUzNyAyLjU0MzYyNDI4NDE2IEwgLTUuOTIzOTcxMTk4MjEgNS4yOTYwOTEzNzU5NCBMIC0yMS4yNjQ0Mjk1MDkyIDIuODQ0MTQ2MjY4NTkgTCAtNy4xMDc1NjMzMzcyNSAtMy41NTMxMDU5Njg5MiBMIC04LjE4Nzg5ODg0ODM4IC0wLjQwNjEwODE2NDEyNyBMIC0wLjE5NzI2NTM1NjUwOCAtMS40NzQ4NjYyMjQxNCBMIDAuMTk3MjY1MzU2NTA4IDEuNDc0ODY2MjI0MTQiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyX2Q1MWUzODYzNDg3ZDQyNGM5MDFjNmIzYWNlYzljMzA1LnNldEljb24oZGl2X2ljb25fYjBlOTJiMzI3Y2Q3NGVlNTgwNzdkN2EyMjBlOWJmNzEpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzIxYzQ0MzdmMjU5YTRiMGViMGZiMGQyMmYwZTRlYmUyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwOTg5LC0zOC41MzA3MTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fNzRkY2NjMzFiZGM4NGEyYmFiYzk0OWJlNTlmOTUwZmMgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFsyNS44Mzk1ODk5MzI4LDUuMDEyMjU5MjAyMTVdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjlweCIgaGVpZ2h0PSIxMnB4IiB2aWV3Qm94PSItMjUuODM5NTg5OTMyOCAtNS4wMTIyNTkyMDIxNSAyOS4wIDEyLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gMC4xODAzNTM1MzM3MjkgMS40NzcwMjk2NTUzOCBMIC05LjM4NTkxMjk2NzExIDIuNjQ1MTIzOTg2OTYgTCAtNy41NDgxNzYyNDQyNyA1LjQxODgyOTc2Mzk5IEwgLTIyLjg1OTUzMzM5OTMgMi43OTEyNzYxMzUxNCBMIC04LjYzMDI5NzQ0NjY0IC0zLjQ0MzM0ODE2ODI5IEwgLTkuNzQ2NjIwMDM0NTYgLTAuMzA4OTM1MzIzODAxIEwgLTAuMTgwMzUzNTMzNzI5IC0xLjQ3NzAyOTY1NTM4IEwgMC4xODAzNTM1MzM3MjkgMS40NzcwMjk2NTUzOCIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfMjFjNDQzN2YyNTlhNGIwZWIwZmIwZDIyZjBlNGViZTIuc2V0SWNvbihkaXZfaWNvbl83NGRjY2MzMWJkYzg0YTJiYWJjOTQ5YmU1OWY5NTBmYyk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMWI3NDU0YmY4N2Y3NDUzNThmYTY4NWIwMjNhODlhODkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDA5OTksLTM4LjUzMTU0NjY2NjddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fZjk3MTY0YTMxYzVjNDhlOTllMjZhY2ZhNjVlZGExYjIgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFsyMS4yMDY1MzIwNTU2LDYuNjA4NzY5NDUxNjldLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIxMnB4IiB2aWV3Qm94PSItMjEuMjA2NTMyMDU1NiAtNi42MDg3Njk0NTE2OSAyNC4wIDEyLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gLTAuMjI3NDcyMTg1NzY3IDEuNDcwNTEwMjUzMTggTCAtNS42MzM0MTYyMDQyMSAwLjYzNDI2ODYxNTcyNSBMIC00LjYxNzg1MDMyMjU3IDMuODAyNzYxMzA3ODUgTCAtMTguNjQwNTM2Mjk3IC0yLjg4MzQ5MTMwOTM2IEwgLTMuMjUzMDE3MjA3OTYgLTUuMDIwMzAwMjExMjIgTCAtNS4xNzg0NzE4MzI2OCAtMi4zMDY3NTE4OTA2MyBMIDAuMjI3NDcyMTg1NzY3IC0xLjQ3MDUxMDI1MzE4IEwgLTAuMjI3NDcyMTg1NzY3IDEuNDcwNTEwMjUzMTgiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyXzFiNzQ1NGJmODdmNzQ1MzU4ZmE2ODViMDIzYTg5YTg5LnNldEljb24oZGl2X2ljb25fZjk3MTY0YTMxYzVjNDhlOTllMjZhY2ZhNjVlZGExYjIpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzAyNTQ2ODQ1MzA3NjQ5OGZiODkzYmYzN2JhMDMyMGY3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwOTUsLTM4LjUzMjA0NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl8wNTU0MDQ5YTZjZTc0Yjc5OGU0YzM4YzlhYzFlMzE2NiA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzIuMCwyLjBdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iNHB4IiBoZWlnaHQ9IjRweCIgdmlld0JveD0iLTIuMCAtMi4wIDQuMCA0LjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gLTAuOTkwMTk0MzMyMjMzIDEuMTEwNzAyMTEzMjcgTCAwLjQ2Njc5OTA4MDAwOSAxLjQxMjg4NDUwMzAzIEwgMS40NTY5OTM0MTIyNCAwLjMwMjE4MjM4OTc2NCBMIDAuOTkwMTk0MzMyMjMzIC0xLjExMDcwMjExMzI3IEwgLTAuNDY2Nzk5MDgwMDA5IC0xLjQxMjg4NDUwMzAzIEwgLTEuNDU2OTkzNDEyMjQgLTAuMzAyMTgyMzg5NzY0IEwgLTAuOTkwMTk0MzMyMjMzIDEuMTEwNzAyMTEzMjcgTCAwLjQ2Njc5OTA4MDAwOSAxLjQxMjg4NDUwMzAzIiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl8wMjU0Njg0NTMwNzY0OThmYjg5M2JmMzdiYTAzMjBmNy5zZXRJY29uKGRpdl9pY29uXzA1NTQwNDlhNmNlNzRiNzk4ZTRjMzhjOWFjMWUzMTY2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80ZTVjYzgxNWU4MTM0OGIxOWFjNGJmZThhYjdjMDg4MCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMTAxMiwtMzguNTMxNjQ2NjY2N10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl8zOTE3YWY5M2EyNDk0MTgzODM5NjZmNDcxYjYyYWU4MCA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzIuOTM3ODA3NzYyNjQsNC42Njg0NzU5Nzg4OV0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyM3B4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9Ii0yLjkzNzgwNzc2MjY0IC00LjY2ODQ3NTk3ODg5IDIzLjAgMTIuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAwLjQ2Mzk4NTkyNDMzNSAtMS40MTM4MTA4Mjk2NCBMIDUuMzI4MDU4ODU2NTkgMC4xODI0ODU3Mzg1OTcgTCA0Ljg0MjIxOTg3NTYxIC0zLjEwOTEyMTg0NTAzIEwgMTcuNTg4MzcwMzk5MSA1Ljc3MjE2OTg4NzI1IEwgMi4wNTgzMDQzMjk2MSA1LjM3Mzc0MzEzMjg0IEwgNC40MDAwODcwMDc5MiAzLjAxMDEwNzM5Nzg5IEwgLTAuNDYzOTg1OTI0MzM1IDEuNDEzODEwODI5NjQgTCAwLjQ2Mzk4NTkyNDMzNSAtMS40MTM4MTA4Mjk2NCIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfNGU1Y2M4MTVlODEzNDhiMTlhYzRiZmU4YWI3YzA4ODAuc2V0SWNvbihkaXZfaWNvbl8zOTE3YWY5M2EyNDk0MTgzODM5NjZmNDcxYjYyYWU4MCk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNGY5MTUwM2U4MDE1NGRjZmFkOTRiMjVmMDk4Y2FkMGIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDA5OTgsLTM4LjUzMDgxNV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl9kODUzZWFkODAzZGY0MDdjYWNiZTM5OGIzYmEyM2M4NiA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzMuMzQ1NDg4OTQwNjQsNy4wMzk4MDQ4MDI2M10sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyOXB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9Ii0zLjM0NTQ4ODk0MDY0IC03LjAzOTgwNDgwMjYzIDI5LjAgMTIuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAtMC4xOTc2NTU2MjE1MTMgLTEuNDc0ODEzOTczMTEgTCA5LjAzNTY5NjM2MDcyIC0yLjcxMjI3NDM5NzI1IEwgNy4xNjU1NzExNDQ1OCAtNS40NjQyNDY3MjE5NiBMIDIyLjUwNjY3Nzc0MDIgLTMuMDE2MzYxMDE3NzYgTCA4LjM1MTUwNDg3MzY2IDMuMzg0NjM3MTE2NzEgTCA5LjQzMTAwNzYwMzc0IDAuMjM3MzUzNTQ4OTcxIEwgMC4xOTc2NTU2MjE1MTMgMS40NzQ4MTM5NzMxMSBMIC0wLjE5NzY1NTYyMTUxMyAtMS40NzQ4MTM5NzMxMSIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfNGY5MTUwM2U4MDE1NGRjZmFkOTRiMjVmMDk4Y2FkMGIuc2V0SWNvbihkaXZfaWNvbl9kODUzZWFkODAzZGY0MDdjYWNiZTM5OGIzYmEyM2M4Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYjA4NzM5MzBlMjIzNDk1NDk1OGNkOGE2OTNmMjVhMTkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDA5ODY2NjY2NywtMzguNTI5OTc2NjY2N10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl83Y2JjMjUyNmZlNDk0ZTBhYTdjZDYyOTM4NzM1NmY1MSA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzMuNDU2OTU1OTYxNDksNi45NjE2NzkyNTI0OF0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyOXB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9Ii0zLjQ1Njk1NTk2MTQ5IC02Ljk2MTY3OTI1MjQ4IDI5LjAgMTIuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAtMC4xODg4Njg1MzA0NjggLTEuNDc1OTY0OTk4OTcgTCA4LjgwMjQwMzA4NjI1IC0yLjYyNjUxMjc4MTkzIEwgNi45NDg3MDEwMjYzNCAtNS4zODk1NzQyNDk0MSBMIDIyLjI3NDk1NjYwNzUgLTIuODUwMzY0NTU3MTYgTCA4LjA4MTkxMjIwOTE0IDMuNDY2MjE1NzQ0NDQgTCA5LjE4MDE0MDE0NzE4IDAuMzI1NDE3MjE2MDIzIEwgMC4xODg4Njg1MzA0NjggMS40NzU5NjQ5OTg5NyBMIC0wLjE4ODg2ODUzMDQ2OCAtMS40NzU5NjQ5OTg5NyIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfYjA4NzM5MzBlMjIzNDk1NDk1OGNkOGE2OTNmMjVhMTkuc2V0SWNvbihkaXZfaWNvbl83Y2JjMjUyNmZlNDk0ZTBhYTdjZDYyOTM4NzM1NmY1MSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZjVhYjU0NDdlNjE0NGNmMDg0MGJmYTk3ODQ2NTMzN2QgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDA5Nzk1LC0zOC41MjkxMzVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fNjMwZjhjMzA1NzQwNDU1NmJiZWE1ZDYzMDkwNzFhZjMgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFszLjMwMTM4MjE1MTY5LDYuNzQyNTAyNzcyNDhdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjhweCIgaGVpZ2h0PSIxMnB4IiB2aWV3Qm94PSItMy4zMDEzODIxNTE2OSAtNi43NDI1MDI3NzI0OCAyOC4wIDEyLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gLTAuMTYyMjY1OTUzNTE2IC0xLjQ3OTEyNjAxMjMyIEwgOC4wODUxMDE1ODU3MiAtMi4zODM4OTQ3MzgzMiBMIDYuMjgxNDQzNjY2MzcgLTUuMTc5ODgwODA5NDUgTCAyMS41NTk1MDE2NTAxIC0yLjM2NTE2MjMwNzY0IEwgNy4yNTUwMzkzODc0NyAzLjY5NDg3NTI2NDQ5IEwgOC40MDk2MzM0OTI3NiAwLjU3NDM1NzI4NjMyNyBMIDAuMTYyMjY1OTUzNTE2IDEuNDc5MTI2MDEyMzIgTCAtMC4xNjIyNjU5NTM1MTYgLTEuNDc5MTI2MDEyMzIiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyX2Y1YWI1NDQ3ZTYxNDRjZjA4NDBiZmE5Nzg0NjUzMzdkLnNldEljb24oZGl2X2ljb25fNjMwZjhjMzA1NzQwNDU1NmJiZWE1ZDYzMDkwNzFhZjMpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzczYTYyOWU5N2ExMTQwMTg5M2MxYjg2ZjVlYzI1Mjg4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwOTY2LC0zOC41MjgyNzVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fZmZkOTBhYmUxOTc1NDQ2ZGIyYmIwOTZjMGI2NzdhMWYgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFsyLjg0MTE1MTg2Mzk2LDYuNzI5NjUxNTY0MjNdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjZweCIgaGVpZ2h0PSIxMnB4IiB2aWV3Qm94PSItMi44NDExNTE4NjM5NiAtNi43Mjk2NTE1NjQyMyAyNi4wIDEyLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gLTAuMTg3NTE2NzE4MDY5IC0xLjQ3NjEzNzM1MTQ4IEwgNy4wMzI0NjAxMDg3MyAtMi4zOTMzMDU2MzM3OCBMIDUuMTgxMjg5MzIxMTEgLTUuMTU4MDYzNjE4NjggTCAyMC41MDUyMTI5OTAyIC0yLjYwNDgxODc0NDkyIEwgNi4zMDYzODk2Mjk1MyAzLjY5ODc2MDQ5MDIyIEwgNy40MDc0OTM1NDQ4NyAwLjU1ODk2OTA2OTE4MyBMIDAuMTg3NTE2NzE4MDY5IDEuNDc2MTM3MzUxNDggTCAtMC4xODc1MTY3MTgwNjkgLTEuNDc2MTM3MzUxNDgiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyXzczYTYyOWU5N2ExMTQwMTg5M2MxYjg2ZjVlYzI1Mjg4LnNldEljb24oZGl2X2ljb25fZmZkOTBhYmUxOTc1NDQ2ZGIyYmIwOTZjMGI2NzdhMWYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzdmZjY5NDM2N2UxMDQyMzdhZDk3MjUzMTNjMjg3YzU4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwOTU1NSwtMzguNTI3NDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fMzE4NzE5MDMyMGZhNGVhYmJkM2QwYzRkZmY1ZDUwMDEgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFszLjE0NzAzMjQ4MDc5LDcuMDM3NzQ1NTUyNzVdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjdweCIgaGVpZ2h0PSIxMnB4IiB2aWV3Qm94PSItMy4xNDcwMzI0ODA3OSAtNy4wMzc3NDU1NTI3NSAyNy4wIDEyLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gLTAuMjQzMDIwMTk3NTQgLTEuNDY4MDIwODM4OTUgTCA3LjQ5Mzc0NzQ4Nzg4IC0yLjc0ODc4NjU4OTI0IEwgNS41Mzk2ODYyNTM4NiAtNS40NDE4MDgwNjk1OSBMIDIwLjk0ODk1NTIzNiAtMy40Njc5NDc1MjgxNSBMIDYuOTk3ODA3NDM5MSAzLjM2NjMxNjk2NDEgTCA3Ljk3OTc4Nzg4Mjk3IDAuMTg3MjU1MDg4NjYgTCAwLjI0MzAyMDE5NzU0IDEuNDY4MDIwODM4OTUgTCAtMC4yNDMwMjAxOTc1NCAtMS40NjgwMjA4Mzg5NSIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfN2ZmNjk0MzY3ZTEwNDIzN2FkOTcyNTMxM2MyODdjNTguc2V0SWNvbihkaXZfaWNvbl8zMTg3MTkwMzIwZmE0ZWFiYmQzZDBjNGRmZjVkNTAwMSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMGQxOGU3MDA2NjQzNGFiZDk2ZGQ4NmE2NTQyNTEyNTggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDA5MzgsLTM4LjUyNjU0NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl83NWM2ODY4NWZmY2U0YWQwYWY2ZWY5YmZhYzhjNjMwMSA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzMuMTUzMTYzNjIzOSw2LjgxODIyMDM4NjcyXSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjI4cHgiIGhlaWdodD0iMTJweCIgdmlld0JveD0iLTMuMTUzMTYzNjIzOSAtNi44MTgyMjAzODY3MiAyOC4wIDEyLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gLTAuMTcwNzYyNjYxMjcxIC0xLjQ3ODE2OTE3NjIyIEwgOC4zOTAxNTAxNjYyNiAtMi40NjcxNTIyMjQyMSBMIDYuNTcwNDU1NjY3NSAtNS4yNTI3Mjc5MTUzNyBMIDIxLjg2NDQzNTQxMzUgLTIuNTI1ODQ2OTk5NDMgTCA3LjU5NTAzMTYzNTEzIDMuNjE2Mjg3MTQxOTMgTCA4LjczMTY3NTQ4ODggMC40ODkxODYxMjgyMjUgTCAwLjE3MDc2MjY2MTI3MSAxLjQ3ODE2OTE3NjIyIEwgLTAuMTcwNzYyNjYxMjcxIC0xLjQ3ODE2OTE3NjIyIiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl8wZDE4ZTcwMDY2NDM0YWJkOTZkZDg2YTY1NDI1MTI1OC5zZXRJY29uKGRpdl9pY29uXzc1YzY4Njg1ZmZjZTRhZDBhZjZlZjliZmFjOGM2MzAxKTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85MmMwMmFlZjc5NzE0OWQwOWExNzQ5MDU1YmQ4MTdjZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMDkzOCwtMzguNTI1NzAxNjY2N10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl9iNWMyMmUxYmVhYWU0ZjJjODU4MDk0OGYwYTRmZDk2MCA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzIuODMxNjU3MjYzNDksNS42NjQwMjk5NTE2Nl0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyNXB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9Ii0yLjgzMTY1NzI2MzQ5IC01LjY2NDAyOTk1MTY2IDI1LjAgMTIuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAwLjEwODI4NjY0Nzg1NyAtMS40ODQwNTQ1ODE4NSBMIDYuMTk2NzY3NTMyMTMgLTEuMDM5Nzk3ODg1NjUgTCA0LjkyOTI4NjI0NiAtNC4xMTYxOTM2OTcyIEwgMTkuNDQ0OTcyMTIwOSAxLjQxODgzNjUyNjkxIEwgNC4yNzk1NjYzNTg4NSA0Ljc4ODEzMzc5Mzg3IEwgNS45ODAxOTQyMzY0MSAxLjkyODMxMTI3ODA0IEwgLTAuMTA4Mjg2NjQ3ODU3IDEuNDg0MDU0NTgxODUgTCAwLjEwODI4NjY0Nzg1NyAtMS40ODQwNTQ1ODE4NSIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfOTJjMDJhZWY3OTcxNDlkMDlhMTc0OTA1NWJkODE3Y2Uuc2V0SWNvbihkaXZfaWNvbl9iNWMyMmUxYmVhYWU0ZjJjODU4MDk0OGYwYTRmZDk2MCk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNDE1MGYzYmVkNTQ2NGFjNjg1NDNhNjE4OGNkYzFkZmEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDA5NTU1LC0zOC41MjQ5MDE2NjY3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgdmFyIGRpdl9pY29uXzY2NzJjMWY0Yzg5NDQ0ODNhMmVlMDcxMjY3Zjg0NzEyID0gTC5kaXZJY29uKHsKICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzE0LDE0XSwKICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMi43NTk2MjI2ODk4NCw0Ljg0NzUwMzY2OTg1XSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjIxcHgiIGhlaWdodD0iMTJweCIgdmlld0JveD0iLTIuNzU5NjIyNjg5ODQgLTQuODQ3NTAzNjY5ODUgMjEuMCAxMi4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIDAuNTA2MDcwNDc2MTAzIC0xLjM5OTI5ODYzNjE4IEwgMy44OTkyMDc4NDY5IC0wLjE3MjEzNjI1NjE2OSBMIDMuNTEyMDUwMTYyOTIgLTMuNDc2ODA0MDA0NjMgTCAxNS45ODY4MjUwOTY0IDUuNzgxNzk2NjY0OTQgTCAwLjQ3NTYyNzMwNjMwNiA0LjkxODk4NzgxMjQ1IEwgMi44ODcwNjY4OTQ2OSAyLjYyNjQ2MTAxNjE5IEwgLTAuNTA2MDcwNDc2MTAzIDEuMzk5Mjk4NjM2MTggTCAwLjUwNjA3MDQ3NjEwMyAtMS4zOTkyOTg2MzYxOCIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfNDE1MGYzYmVkNTQ2NGFjNjg1NDNhNjE4OGNkYzFkZmEuc2V0SWNvbihkaXZfaWNvbl82NjcyYzFmNGM4OTQ0NDgzYTJlZTA3MTI2N2Y4NDcxMik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzhhMWNkOTJhMjQ4NDRiMTk0NmEzNmJhNzZiOWUyZWIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDA5OTU1LC0zOC41MjQxOTE2NjY3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgdmFyIGRpdl9pY29uXzlhM2ZmYzk3ZDg2NTQxMGRhMDZiMzY2MWQ2MTk4YzU0ID0gTC5kaXZJY29uKHsKICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzE0LDE0XSwKICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMy4yMDk4MjE1MDMyLDQuMzcwMjY1MDM0MDldLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjJweCIgaGVpZ2h0PSIxNHB4IiB2aWV3Qm94PSItMy4yMDk4MjE1MDMyIC00LjM3MDI2NTAzNDA5IDIyLjAgMTQuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAwLjY1MDUyNjQyNjYwNyAtMS4zMzgyNjczMDA3NiBMIDQuODM3MDA0MTM5OTcgMC42OTY3NjI5MDk4NjcgTCA0Ljc5OTc4OTY5MjQyIC0yLjYzMDI5ODExODI2IEwgMTYuMjMwODgzNDIwMiA3Ljg4OTc2ODA1MDA5IEwgMC44OTY2MzExMzI3ODIgNS4zOTkzMDU2ODYzIEwgMy41MzU5NTEyODY3NiAzLjM3MzI5NzUxMTM5IEwgLTAuNjUwNTI2NDI2NjA3IDEuMzM4MjY3MzAwNzYgTCAwLjY1MDUyNjQyNjYwNyAtMS4zMzgyNjczMDA3NiIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfNzhhMWNkOTJhMjQ4NDRiMTk0NmEzNmJhNzZiOWUyZWIuc2V0SWNvbihkaXZfaWNvbl85YTNmZmM5N2Q4NjU0MTBkYTA2YjM2NjFkNjE5OGM1NCk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNTRhYWI3MzI4OWY4NDg5ZWJiNzhiY2VjMDJhMDIwYzEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDEwMjQ1LC0zOC41MjM0MV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl8zZWI5ODZjM2M3ZWY0ODU3OTBlMTlkNjliNmY2MjJiZiA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzIuNjk5MzM1NzMzNTcsNS40NTYzNDk3OTU4Nl0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyM3B4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9Ii0yLjY5OTMzNTczMzU3IC01LjQ1NjM0OTc5NTg2IDIzLjAgMTIuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAwLjI1MDQ0MDQxMzA5MiAtMS40NjY3NzMxOTI5MyBMIDQuOTAxMjUwNjIyNzEgLTAuNjcyNjgyNTc1Njk3IEwgMy45MzUzNTgyNTU5NiAtMy44NTY2NjkzNzQ2NCBMIDE3Ljg1MTc2ODk0NiAzLjA0ODA1NDMzNTA2IEwgMi40MzI3MTU3Nzc0MSA0Ljk0Mzk2OTc4MjkyIEwgNC40MDAzNjk3OTY1MiAyLjI2MDg2MzgxMDE2IEwgLTAuMjUwNDQwNDEzMDkyIDEuNDY2NzczMTkyOTMgTCAwLjI1MDQ0MDQxMzA5MiAtMS40NjY3NzMxOTI5MyIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfNTRhYWI3MzI4OWY4NDg5ZWJiNzhiY2VjMDJhMDIwYzEuc2V0SWNvbihkaXZfaWNvbl8zZWI5ODZjM2M3ZWY0ODU3OTBlMTlkNjliNmY2MjJiZik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOWM5NDJiZmI2ZGFhNGU2ODg4Y2RkMjIwMzExNTFkZGYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDEwMTQsLTM4LjUyMjYwNjY2NjddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fMWU3ZjA5MmJhMWNhNDE4MmJmNDgwNjZhZjU5ZjM0YTAgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFszLjAwODQyMzc4Mzk0LDYuMzM1Nzk4NzA2NjJdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIxMXB4IiB2aWV3Qm94PSItMy4wMDg0MjM3ODM5NCAtNi4zMzU3OTg3MDY2MiAyNC4wIDExLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gLTAuMzIxNTUzODk2MDQ3IC0xLjQ1Mjg0MTA0MTUyIEwgNC45MDc1ODMwNTg0MSAtMi42MTAxOTM2NDQxOSBMIDIuODExNjM0MjI0NzkgLTUuMTk0MzIxODMxMTkgTCAxOC4zMDQ3MDYzMjgyIC00LjA1MTMzNzY2NzEgTCA0Ljc0MDk1NzYwMTA4IDMuNTIyNzI0NDE3OTUgTCA1LjU1MDY5MDg1MDUxIDAuMjk1NDg4NDM4ODU2IEwgMC4zMjE1NTM4OTYwNDcgMS40NTI4NDEwNDE1MiBMIC0wLjMyMTU1Mzg5NjA0NyAtMS40NTI4NDEwNDE1MiIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfOWM5NDJiZmI2ZGFhNGU2ODg4Y2RkMjIwMzExNTFkZGYuc2V0SWNvbihkaXZfaWNvbl8xZTdmMDkyYmExY2E0MTgyYmY0ODA2NmFmNTlmMzRhMCk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNWJmNmVhY2JhOWI0NDg4NzhmODk3NmIxYjcwZWJlNGIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDA5OTE4MzMzMywtMzguNTIxODJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fMzhlYzEwMmQ2OTliNDMzNjlhN2NhYTdjMjZjZjZiNDIgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFsyLjg1MTIzNjg0OTc2LDguOTQ4NDM0NjQ5NzVdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjJweCIgaGVpZ2h0PSIxM3B4IiB2aWV3Qm94PSItMi44NTEyMzY4NDk3NiAtOC45NDg0MzQ2NDk3NSAyMi4wIDEzLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gLTAuNjA0MTMzNDIyNzU3IC0xLjM1OTg0MDcyODczIEwgNC4wNTg5NTk3NDE5MiAtMy40MzE1MDI3ODA1NCBMIDEuNDkwODUyMTY3NjggLTUuNTQ3MDUwODE1MjQgTCAxNi45MDE2NTk3MjMyIC03LjUwODg2Mjg1NjYzIEwgNS4xMTU2NTI3MDQyMiAyLjYxMTk5MzU1NzEzIEwgNS4yNjcyMjY1ODc0MyAtMC43MTE4MjEzMjMwODIgTCAwLjYwNDEzMzQyMjc1NyAxLjM1OTg0MDcyODczIEwgLTAuNjA0MTMzNDIyNzU3IC0xLjM1OTg0MDcyODczIiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl81YmY2ZWFjYmE5YjQ0ODg3OGY4OTc2YjFiNzBlYmU0Yi5zZXRJY29uKGRpdl9pY29uXzM4ZWMxMDJkNjk5YjQzMzY5YTdjYWE3YzI2Y2Y2YjQyKTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82MmI5ZGM4YzQyNjg0MjY4ODM4ZTUxNmViNGNlM2UyMyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMDk0NDE2NjY3LC0zOC41MjExNF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl8yOWI2ZTAzZjQ4YjM0ZjU3OWVjMjE5NWYxZGZiMTA0ZiA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzMuMzE2NjgwNDgwODUsMTMuMjAyNDU5NTE2N10sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyMXB4IiBoZWlnaHQ9IjE2cHgiIHZpZXdCb3g9Ii0zLjMxNjY4MDQ4MDg1IC0xMy4yMDI0NTk1MTY3IDIxLjAgMTYuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAtMC44OTk3NTQyMTczMTYgLTEuMTg1MTUyNDU3ODggTCAzLjcwMDI2NjkxNzM3IC00LjY3NzQzNTk5MzM1IEwgMC43MTU2MDYwMjQ4NTcgLTYuMTQ3OTg2NjkxNzkgTCAxNS4yNjYzOTMyNTU2IC0xMS41OTAwNzE0OTEzIEwgNi4xMTQxMzEzMjg3NSAwLjk2MjkyODA1NTQ5MyBMIDUuNDk5Nzc1MzUyIC0yLjMwNzEzMTA3NzU5IEwgMC44OTk3NTQyMTczMTYgMS4xODUxNTI0NTc4OCBMIC0wLjg5OTc1NDIxNzMxNiAtMS4xODUxNTI0NTc4OCIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfNjJiOWRjOGM0MjY4NDI2ODgzOGU1MTZlYjRjZTNlMjMuc2V0SWNvbihkaXZfaWNvbl8yOWI2ZTAzZjQ4YjM0ZjU3OWVjMjE5NWYxZGZiMTA0Zik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDFmOWQ2M2YyN2E3NDIxZjkzOWEwN2ExNjk3MDc0MzcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDA4OTI1LC0zOC41MjA0N10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl9kODc5MmRjYThhYjA0OWIzOWIwNjFlZTM4NWU3ZjYxMSA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzMuMDU4Nzk1NTA1MjksMTQuOTIzOTI2NDU0Nl0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyMHB4IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9Ii0zLjA1ODc5NTUwNTI5IC0xNC45MjM5MjY0NTQ2IDIwLjAgMTguMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAtMC45NzgzOTEyNzI0NTUgLTEuMTIxMTEzMDcxMDEgTCAzLjc5MjM5MTM1MDM2IC01LjI4NDU1NzU5OTE3IEwgMC43MTQ0OTU3MzQ0NCAtNi41NDgzOTI0Njg3MyBMIDE0Ljg2MDgwMDI2MTkgLTEyLjk2ODk2NTk4MDMgTCA2LjU4NDg0MzM2OTE3IDAuMTc4Mjg1OTU3MzEgTCA1Ljc0OTE3Mzg5NTI3IC0zLjA0MjMzMTQ1NzE2IEwgMC45NzgzOTEyNzI0NTUgMS4xMjExMTMwNzEwMSBMIC0wLjk3ODM5MTI3MjQ1NSAtMS4xMjExMTMwNzEwMSIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfZDFmOWQ2M2YyN2E3NDIxZjkzOWEwN2ExNjk3MDc0Mzcuc2V0SWNvbihkaXZfaWNvbl9kODc5MmRjYThhYjA0OWIzOWIwNjFlZTM4NWU3ZjYxMSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzg1NWFjZjczYzYyNDk0OGE0M2ZlZjNmYjQ4MWJjY2UgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDA4MzQ2NjY2NywtMzguNTE5Nzk2NjY2N10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl8wZGJkY2U5YjZmMjI0MjZiOGIxN2NkMTNlNTIxMDNjOCA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzMuMjA3Njc2MDc3MzYsMTIuODk5MjQzOTU3Ml0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyMHB4IiBoZWlnaHQ9IjE2cHgiIHZpZXdCb3g9Ii0zLjIwNzY3NjA3NzM2IC0xMi44OTkyNDM5NTcyIDIwLjAgMTYuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAtMC45MTA2OTM1NDYxNTggLTEuMTc2NzY3Mjk0MzIgTCAyLjk5Mzc0MjE5NjM4IC00LjE5ODM4ODAwODM1IEwgLTAuMDA0NDEyMTkwMjU1ODYgLTUuNjQxMjI5MDUwODQgTCAxNC40OTUzNDEzOTE0IC0xMS4yMTc4NjI2Mjk0IEwgNS40NTk3NDkwODY2OSAxLjQxOTM3NDcxNTA5IEwgNC44MTUxMjkyODg3IC0xLjg0NDg1MzQxOTcxIEwgMC45MTA2OTM1NDYxNTggMS4xNzY3NjcyOTQzMiBMIC0wLjkxMDY5MzU0NjE1OCAtMS4xNzY3NjcyOTQzMiIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfNzg1NWFjZjczYzYyNDk0OGE0M2ZlZjNmYjQ4MWJjY2Uuc2V0SWNvbihkaXZfaWNvbl8wZGJkY2U5YjZmMjI0MjZiOGIxN2NkMTNlNTIxMDNjOCk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfM2RlOTVkNWQ4NDc2NDhjMmJhY2UzMWY0ZDg5NDM2OWQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDA3OTE1LC0zOC41MTkxMDgzMzMzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgdmFyIGRpdl9pY29uXzQ5YWNjZjU5NTk4NTQzM2Q5ZWY1ZDdhMzgxMGE3YzYxID0gTC5kaXZJY29uKHsKICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzE0LDE0XSwKICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMi45OTMzNzY1OTMwNCw2LjQ0OTc2MjY4NTQ1XSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjIzcHgiIGhlaWdodD0iMTFweCIgdmlld0JveD0iLTIuOTkzMzc2NTkzMDQgLTYuNDQ5NzYyNjg1NDUgMjMuMCAxMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIC0wLjQyNTcxNDU3MTUxOSAtMS40MjU4MDE5MTU5NyBMIDQuMTgxMDI5NTcwMTUgLTIuODAxMjc5MTcyOTQgTCAxLjkwMzc5ODUxMTEzIC01LjIyNzE2ODQzMzM3IEwgMTcuNDM4OTYxMzg1NCAtNS4yMDY5MDg0MDA2NCBMIDQuNDU4MDg1OTQwMjUgMy4zMjc2NDMwNjI0NyBMIDUuMDMyNDU4NzEzMTkgMC4wNTAzMjQ2NTkwMDQ0IEwgMC40MjU3MTQ1NzE1MTkgMS40MjU4MDE5MTU5NyBMIC0wLjQyNTcxNDU3MTUxOSAtMS40MjU4MDE5MTU5NyIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfM2RlOTVkNWQ4NDc2NDhjMmJhY2UzMWY0ZDg5NDM2OWQuc2V0SWNvbihkaXZfaWNvbl80OWFjY2Y1OTU5ODU0MzNkOWVmNWQ3YTM4MTBhN2M2MSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYTliZWUzMmNiOWQ0NGY2YTk4YjY5ODM1NDM1NDcwN2EgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDA3OTM1LC0zOC41MTgyNzgzMzMzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgdmFyIGRpdl9pY29uX2EyYzAwY2ViYTkxNjQ3M2NiMjEzNmJhNTE1OTMzNjljID0gTC5kaXZJY29uKHsKICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzE0LDE0XSwKICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMi42NjgyNzQyMjcyNyw1LjkyOTU5MDQ0MTY3XSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjI1cHgiIGhlaWdodD0iMTJweCIgdmlld0JveD0iLTIuNjY4Mjc0MjI3MjcgLTUuOTI5NTkwNDQxNjcgMjUuMCAxMi4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIDAuMDIxNzkzNTYwODEyNSAtMS40ODc4NDAzOTQ5IEwgNi4zMTY0NzUxMTI5NSAtMS4zOTU2MzcyNzU3NiBMIDQuODcyMjIxODM5NjcgLTQuMzkzMTExNjI2MzggTCAxOS42ODUyNDUxMDYzIDAuMjg4MzQ1MTY2NDU5IEwgNC43NDE0NjA0NzQ3OSA0LjUzMzkzMDc0MzA0IEwgNi4yNzI4ODc5OTEzMiAxLjU4MDA0MzUxNDA1IEwgLTAuMDIxNzkzNTYwODEyNSAxLjQ4Nzg0MDM5NDkgTCAwLjAyMTc5MzU2MDgxMjUgLTEuNDg3ODQwMzk0OSIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfYTliZWUzMmNiOWQ0NGY2YTk4YjY5ODM1NDM1NDcwN2Euc2V0SWNvbihkaXZfaWNvbl9hMmMwMGNlYmE5MTY0NzNjYjIxMzZiYTUxNTkzMzY5Yyk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzZmMGYxMmM3MTZjNDk3MThkMDFjZjA1YzgxZGFiNjkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDA3ODc1LC0zOC41MTc0MjVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fOTdiZTdhNWVmNjRjNDBlNDhjOTM1ODhiZDc5MmZmNGQgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFsyLjU4NDMxNTcwNjY3LDYuMTI1MTMzNTAzN10sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyNXB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9Ii0yLjU4NDMxNTcwNjY3IC02LjEyNTEzMzUwMzcgMjUuMCAxMi4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIC0wLjAzNzI3Nzg3MDY3ODMgLTEuNDg3NTMyOTc3OTEgTCA2LjQ0MzU3MTc4NTUgLTEuNjQ5OTQ0MzUyMjggTCA0Ljg4MTQ4MzA2NjI0IC00LjU4NzczMjQzNzQxIEwgMTkuODY4NjQ2NDU3MyAtMC40OTc5MTIyMTA0NzggTCA1LjEwNTE1MDI5MDMxIDQuMzM3NDY1NDMwMDIgTCA2LjUxODEyNzUyNjg2IDEuMzI1MTIxNjAzNTMgTCAwLjAzNzI3Nzg3MDY3ODMgMS40ODc1MzI5Nzc5MSBMIC0wLjAzNzI3Nzg3MDY3ODMgLTEuNDg3NTMyOTc3OTEiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyXzM2ZjBmMTJjNzE2YzQ5NzE4ZDAxY2YwNWM4MWRhYjY5LnNldEljb24oZGl2X2ljb25fOTdiZTdhNWVmNjRjNDBlNDhjOTM1ODhiZDc5MmZmNGQpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzUxMGY3ZTE2NDU1MTQ3MmNhYzE0OTkwNzk0NWNkZWJlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwNzg0NSwtMzguNTE2NTNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fNmVhZmQyYzk1ZjUyNGI2NjlmMmFkMWVkNDg3MjFkY2YgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFszLjExNjYzMDc3NTQ2LDMuODYxNjQzMDkzOTNdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjdweCIgaGVpZ2h0PSIxMXB4IiB2aWV3Qm94PSItMy4xMTY2MzA3NzU0NiAtMy44NjE2NDMwOTM5MyAyNy4wIDExLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gMC4zNTQ4OTQ4NjU0ODQgLTEuNDQ1MDU4MzQ5ODQgTCA4LjQ3MTAwMzAzMTQ2IDAuNTQ4MTkzNDIxNzA2IEwgNy43MzU3MzQ0MTI1OCAtMi42OTY4MTgxNDM0NyBMIDIxLjEyMTYzMzMxNDYgNS4xODczMDU1NjA5MSBMIDUuNjA2MzY1MjE5NjggNS45NzM1MzE5NTU2IEwgNy43NjEyMTMzMDA0OSAzLjQzODMxMDEyMTM5IEwgLTAuMzU0ODk0ODY1NDg0IDEuNDQ1MDU4MzQ5ODQgTCAwLjM1NDg5NDg2NTQ4NCAtMS40NDUwNTgzNDk4NCIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfNTEwZjdlMTY0NTUxNDcyY2FjMTQ5OTA3OTQ1Y2RlYmUuc2V0SWNvbihkaXZfaWNvbl82ZWFmZDJjOTVmNTI0YjY2OWYyYWQxZWQ0ODcyMWRjZik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMmNkNGJkZGY2NzZhNGJjNTk0MjRhYzA4YTEwYTJhNjkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDA4Mjk1LC0zOC41MTU4NTY2NjY3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgdmFyIGRpdl9pY29uXzAyZjZiNDcyN2VkNjQ2YjRiOThkNTI5NjBmZmU3ODZiID0gTC5kaXZJY29uKHsKICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzE0LDE0XSwKICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMy40MzQxMzE0NjM0NywzLjU3NzcwNzI3ODM4XSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjIycHgiIGhlaWdodD0iMjFweCIgdmlld0JveD0iLTMuNDM0MTMxNDYzNDcgLTMuNTc3NzA3Mjc4MzggMjIuMCAyMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIDEuMDEwNjAwMTA3MDQgLTEuMDkyMTY4MjIxMzIgTCA3LjMyMzQyMzI5NTI4IDQuNzQ5MTg0NDc5ODkgTCA4LjI1MjQ1NTI4ODA0IDEuNTU0MjQ3OTMwMjEgTCAxNi4xNDIzMzcxODAxIDE0LjkzNjc1MzY2NDUgTCAyLjE4ODg1NDY0NTgxIDguMTA3MjU3MjU4MTEgTCA1LjMwMjIyMzA4MTIgNi45MzM1MjA5MjI1MiBMIC0xLjAxMDYwMDEwNzA0IDEuMDkyMTY4MjIxMzIgTCAxLjAxMDYwMDEwNzA0IC0xLjA5MjE2ODIyMTMyIiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl8yY2Q0YmRkZjY3NmE0YmM1OTQyNGFjMDhhMTBhMmE2OS5zZXRJY29uKGRpdl9pY29uXzAyZjZiNDcyN2VkNjQ2YjRiOThkNTI5NjBmZmU3ODZiKTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yYzlmYTAxZWExNGU0NmY4OGY5MjBjZTBmMmViNTEzYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMDg5MiwtMzguNTE1MzddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fZWVjYTg2NDgwM2NhNDE0OGExNTM0YjdkN2QxODdhYjggPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFszLjA4MjE3OTgxOTU1LDMuMTg4MDk1Mjk4NThdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMTlweCIgaGVpZ2h0PSIxOXB4IiB2aWV3Qm94PSItMy4wODIxNzk4MTk1NSAtMy4xODgwOTUyOTg1OCAxOS4wIDE5LjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gMS4wNDQ2MzU2OTM4MyAtMS4wNTk2NjA0NDkgTCA1LjM4Nzk2NzcwNzU5IDMuMjIyMDg4MTU4MzQgTCA2LjQxNzU3ODY0NjI2IDAuMDU4MTMxNTY2NTA4IEwgMTMuODgwMjc2MDU0NyAxMy42ODM0Njk4NTE4IEwgMC4xNDk3NjQ0ODMyNjMgNi40MTYwOTQyNjA0OSBMIDMuMjk4Njk2MzE5OTMgNS4zNDE0MDkwNTYzMyBMIC0xLjA0NDYzNTY5MzgzIDEuMDU5NjYwNDQ5IEwgMS4wNDQ2MzU2OTM4MyAtMS4wNTk2NjA0NDkiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyXzJjOWZhMDFlYTE0ZTQ2Zjg4ZjkyMGNlMGYyZWI1MTNhLnNldEljb24oZGl2X2ljb25fZWVjYTg2NDgwM2NhNDE0OGExNTM0YjdkN2QxODdhYjgpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2Q5MmZjN2I4NjJkNTQ4ZjY4OWFkZmQyN2Q4Mzg3ZGUzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwOTQxNSwtMzguNTE0NjgxNjY2N10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl80NmRlYTkzODg3NTA0YTM1OGRjYjBlYzNkMDFiNDk4ZSA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzMuNDI2NDA3MDA1MjksMi45MjYwNTcyMjMzOF0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyNXB4IiBoZWlnaHQ9IjE1cHgiIHZpZXdCb3g9Ii0zLjQyNjQwNzAwNTI5IC0yLjkyNjA1NzIyMzM4IDI1LjAgMTUuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAwLjcyMDkxMjcyMjEzOSAtMS4zMDE3MDIyODgxOCBMIDcuODczNjkwODQwMDYgMi42NTk2NzEwNTM5OSBMIDguMDEzODEzOTk2MTYgLTAuNjY0NjQ2MjQ0NTE0IEwgMTguODY4MDk4NzExNiAxMC40NDk1ODc4NDE0IEwgMy42ODgzMzc2NjMzMiA3LjE0NTU2NzQ4NDU4IEwgNi40MzE4NjUzOTU3OCA1LjI2MzA3NTYzMDM1IEwgLTAuNzIwOTEyNzIyMTM5IDEuMzAxNzAyMjg4MTggTCAwLjcyMDkxMjcyMjEzOSAtMS4zMDE3MDIyODgxOCIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfZDkyZmM3Yjg2MmQ1NDhmNjg5YWRmZDI3ZDgzODdkZTMuc2V0SWNvbihkaXZfaWNvbl80NmRlYTkzODg3NTA0YTM1OGRjYjBlYzNkMDFiNDk4ZSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMTE3ZTQ5NWFkNzJkNGY4ODk5MWQxMmIyNjZmNzA4NDAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDA5NzEsLTM4LjUxMzg4NjY2NjddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fZDQyNGJjNzI0YWZjNDRkODg5NmZkNDdmOGFkMDJmNWQgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFszLjE0MzgwOTc0OTM0LDMuOTA2MzAxMzY0NDddLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjZweCIgaGVpZ2h0PSIxMnB4IiB2aWV3Qm94PSItMy4xNDM4MDk3NDkzNCAtMy45MDYzMDEzNjQ0NyAyNi4wIDEyLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gMC40NTY0NTc0ODQxMDMgLTEuNDE2MjU5MzU2NjIgTCA3Ljg3ODk2MTI1OTk3IDAuOTc1OTk4Mzc3NDI3IEwgNy4zNzU2MTY4NzE1NiAtMi4zMTI5Nzc4MTk5MSBMIDIwLjE2ODgzNzk4NTQgNi41MDAzNzUwOTA5NyBMIDQuNjM2ODcxOTY2OTQgNi4xODQ1NzgzMTk3OSBMIDYuOTY2MDQ2MjkxNzcgMy44MDg1MTcwOTA2NiBMIC0wLjQ1NjQ1NzQ4NDEwMyAxLjQxNjI1OTM1NjYyIEwgMC40NTY0NTc0ODQxMDMgLTEuNDE2MjU5MzU2NjIiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyXzExN2U0OTVhZDcyZDRmODg5OTFkMTJiMjY2ZjcwODQwLnNldEljb24oZGl2X2ljb25fZDQyNGJjNzI0YWZjNDRkODg5NmZkNDdmOGFkMDJmNWQpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzA4MmVjNDQyMDA2ODRjMmU4ZDZhMjIxOGMzMTcwNGYyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwOTkwNSwtMzguNTEzMDU4MzMzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl81YmY5NDVhMjlhMzQ0YzU4YTM0MDYzYTYwZDIxODdkNCA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzMuMDM2MjMyMzkwMzMsNC44MjQ1OTI5MTE4M10sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjExcHgiIHZpZXdCb3g9Ii0zLjAzNjIzMjM5MDMzIC00LjgyNDU5MjkxMTgzIDI0LjAgMTEuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAwLjI3NTc3OTE2MDY4OSAtMS40NjIyMjA4NjM4IEwgNS4zMTkxMDU3NjY1MyAtMC41MTEwMzQ2MTQ5NDIgTCA0LjQwODQ0MzIyNDExIC0zLjcxMTI1NTUwMzIzIEwgMTguMjAzMzE0MzggMy40MzMxOTg2OTUwNiBMIDIuNzUzNzY4MjU5OTggNS4wNjIwNjk2Nzk1NyBMIDQuNzY3NTQ3NDQ1MTUgMi40MTM0MDcxMTI2NiBMIC0wLjI3NTc3OTE2MDY4OSAxLjQ2MjIyMDg2MzggTCAwLjI3NTc3OTE2MDY4OSAtMS40NjIyMjA4NjM4IiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl8wODJlYzQ0MjAwNjg0YzJlOGQ2YTIyMThjMzE3MDRmMi5zZXRJY29uKGRpdl9pY29uXzViZjk0NWEyOWEzNDRjNThhMzQwNjNhNjBkMjE4N2Q0KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83ZWNkZmFkODA0ZWE0NzUwYWZjYjI1ZjNkNmQ4YjA5NSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMTAwNjY2NjY3LC0zOC41MTIyNF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl8xYTNmYzZlYjIyZDM0MGZkYjFiMjNjNDUxZmY4Yjg0OSA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzIuNzc2NDY4OTYyMDIsNS42MjEwNzA2MjI2NV0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyM3B4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9Ii0yLjc3NjQ2ODk2MjAyIC01LjYyMTA3MDYyMjY1IDIzLjAgMTIuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAwLjE5MzYzMDQ3MDAzMiAtMS40NzUzNDc4MzczMiBMIDQuNTU2MTkyNDgwMTggLTAuOTAyNzg3OTg5OTM2IEwgMy40NjgxMDU1ODI5MyAtNC4wNDcxMTQxMzQ2IEwgMTcuNjQwNjkyNTQ2IDIuMzE1MjM0MDc3NjcgTCAyLjMwNjMyMjc2MjczIDQuODA0OTcyODg5MyBMIDQuMTY4OTMxNTQwMTIgMi4wNDc5MDc2ODQ3IEwgLTAuMTkzNjMwNDcwMDMyIDEuNDc1MzQ3ODM3MzIgTCAwLjE5MzYzMDQ3MDAzMiAtMS40NzUzNDc4MzczMiIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfN2VjZGZhZDgwNGVhNDc1MGFmY2IyNWYzZDZkOGIwOTUuc2V0SWNvbihkaXZfaWNvbl8xYTNmYzZlYjIyZDM0MGZkYjFiMjNjNDUxZmY4Yjg0OSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYmU2YzJiZjU0MzEwNDJhZWEyYTEzZDcxOTNmMWVjZDMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDEwMTYsLTM4LjUxMTQ0NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl85MTU1Mjc0NDViZjU0NzZkYjY2ZDQ3MzQ0ZmMzOTZkZiA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzIuNzYyNzAzODMwMTcsNC42MzY1NDM4NTA4M10sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyM3B4IiBoZWlnaHQ9IjExcHgiIHZpZXdCb3g9Ii0yLjc2MjcwMzgzMDE3IC00LjYzNjU0Mzg1MDgzIDIzLjAgMTEuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAwLjM2NDg3NTE1MzA1OSAtMS40NDI1NzA2NjQ3MSBMIDUuMjIxMjA2NjYzNCAtMC4yMTQyMzkzNjI0NzkgTCA0LjUwODM4NjMwNDgxIC0zLjQ2NDI1NTg0NDk2IEwgMTcuODM5NDY3NDkyNyA0LjUxMjIwNzY3OTc2IEwgMi4zMTkxMzUzODY0NSA1LjE5MTE2ODE0MzMgTCA0LjQ5MTQ1NjM1NzI4IDIuNjcwOTAxOTY2OTQgTCAtMC4zNjQ4NzUxNTMwNTkgMS40NDI1NzA2NjQ3MSBMIDAuMzY0ODc1MTUzMDU5IC0xLjQ0MjU3MDY2NDcxIiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl9iZTZjMmJmNTQzMTA0MmFlYTJhMTNkNzE5M2YxZWNkMy5zZXRJY29uKGRpdl9pY29uXzkxNTUyNzQ0NWJmNTQ3NmRiNjZkNDczNDRmYzM5NmRmKTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8zYTUzZWM3ZDNmMmM0NjJhOTY0ZmJmNWQwYjA2OTNkNyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMTAzOTUsLTM4LjUxMDY0NjY2NjddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fNWIzMGM2ZDJmZDhhNDQwZDlkZTc4M2NiZmZhNjE1ZDIgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFsyLjcyMTU5NTUxODkzLDQuNjg4MjI1MDYwNTldLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjNweCIgaGVpZ2h0PSIxMXB4IiB2aWV3Qm94PSItMi43MjE1OTU1MTg5MyAtNC42ODgyMjUwNjA1OSAyMy4wIDExLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gMC4zNDM0NTA1NzU2ODIgLTEuNDQ3ODIxMDE4NjYgTCA1LjIxMzMyMDk0NTU5IC0wLjI5MjU5NTUwMzU2MyBMIDQuNDUyNDAxMDc4MjkgLTMuNTMxNjg4MTE2NTYgTCAxNy45MDAyNTk1Mzc4IDQuMjQ2MjgwNjk2MjMgTCAyLjM5MTY5NzYyNDIgNS4xNTUyMzc5OTUzOCBMIDQuNTI2NDE5Nzk0MjIgMi42MDMwNDY1MzM3NSBMIC0wLjM0MzQ1MDU3NTY4MiAxLjQ0NzgyMTAxODY2IEwgMC4zNDM0NTA1NzU2ODIgLTEuNDQ3ODIxMDE4NjYiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyXzNhNTNlYzdkM2YyYzQ2MmE5NjRmYmY1ZDBiMDY5M2Q3LnNldEljb24oZGl2X2ljb25fNWIzMGM2ZDJmZDhhNDQwZDlkZTc4M2NiZmZhNjE1ZDIpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzVkYWU3MmI3Y2MxMDQ0NzU4YTVkYjJjMjk0NDVjYWNkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAxMDUyMTY2NjcsLTM4LjUwOTgxNV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl8xNWRmOWQzZDQwZDc0YWY0ODlkM2VmNzVmMjQ4MGI2OCA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzIuMjUzMTczMDYxOTYsNi4wNjA2NzM5MTEwOF0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyMHB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9Ii0yLjI1MzE3MzA2MTk2IC02LjA2MDY3MzkxMTA4IDIwLjAgMTIuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAtMC4xMTYxMTY3OTUwNzQgLTEuNDgzNDYyNDY2NjMgTCAyLjE0MjQ5MTY3NjQgLTEuNjYwMjUzMTcyNzkgTCAwLjQyNjc5NTYxOTYyNSAtNC41MTEwNjEzMTA5OCBMIDE1LjYwOTc3MDY3MTIgLTEuMjIxODQxODYxODMgTCAxLjEyMzQ5NjM5MDA3IDQuMzg5NzEzNDg4ODEgTCAyLjM3NDcyNTI2NjU1IDEuMzA2NjcxNzYwNDcgTCAwLjExNjExNjc5NTA3NCAxLjQ4MzQ2MjQ2NjYzIEwgLTAuMTE2MTE2Nzk1MDc0IC0xLjQ4MzQ2MjQ2NjYzIiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl81ZGFlNzJiN2NjMTA0NDc1OGE1ZGIyYzI5NDQ1Y2FjZC5zZXRJY29uKGRpdl9pY29uXzE1ZGY5ZDNkNDBkNzRhZjQ4OWQzZWY3NWYyNDgwYjY4KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85MzRkNDM4NGZhNDc0YjQ5YWYyNDJmNzVmOTJkMDQ1MCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMTAyMjE2NjY3LC0zOC41MDkyMTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fZWRhYTgxMGYxYTk5NDFkYWFlYWI0M2EyZjkxZWZhMzQgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFs1LjQ1NzU3NTEwMDEzLDE1LjkzMDYwNDU1OTldLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMTRweCIgaGVpZ2h0PSIyMHB4IiB2aWV3Qm94PSItNS40NTc1NzUxMDAxMyAtMTUuOTMwNjA0NTU5OSAxNC4wIDIwLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gLTEuMzI2MjUzMzEyNyAtMC42NzQ2ODIyNTg5NDkgTCAtMC40OTMxNzc0Nzk1NjggLTIuMzEyMjk2OTU2NSBMIC0zLjgyMDM2NjM2MzkzIC0yLjMzNTQwODE2MTY5IEwgNi45MDUyMTYxNjM2NyAtMTMuNTczODk0NTExOSBMIDQuMTM3MTUzNTEyMyAxLjcxMjY4NTM5MiBMIDIuMTU5MzI5MTQ1ODQgLTAuOTYyOTMyNDM4NjAzIEwgMS4zMjYyNTMzMTI3IDAuNjc0NjgyMjU4OTQ5IEwgLTEuMzI2MjUzMzEyNyAtMC42NzQ2ODIyNTg5NDkiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyXzkzNGQ0Mzg0ZmE0NzRiNDlhZjI0MmY3NWY5MmQwNDUwLnNldEljb24oZGl2X2ljb25fZWRhYTgxMGYxYTk5NDFkYWFlYWI0M2EyZjkxZWZhMzQpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2QyZjFiYTg4MDBhMzRhMjA4MGQ1ZjVhNDc2MTYzZGRmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwOTQwMTY2NjcsLTM4LjUwOTE1NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl8xNjk5NzdkOWZhMDU0ZTNhYThhZmIxOTBjMjk0ZTRmYiA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzUuODE3NDU1MTg0MiwyMC40OTkzMTI0MzU3XSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjEycHgiIGhlaWdodD0iMjNweCIgdmlld0JveD0iLTUuODE3NDU1MTg0MiAtMjAuNDk5MzEyNDM1NyAxMi4wIDIzLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gLTEuNDg1NjI0MTIwNDIgLTAuMDg0MDUzMzkyNzU3MyBMIC0xLjIxOTAyNTkxMTg2IC00Ljc5NjExNDU3MzIgTCAtNC4yNzQzMjc1NDU0NSAtMy40Nzg1OTcyMzgyOSBMIDEuMDIzMDc4NzQzMzggLTE4LjA4MjY3ODI2NDIgTCA0LjYzOTQxNzE3NzA1IC0yLjk3NDI3Njg4MTc1IEwgMS43NTIyMjIzMjg5OCAtNC42MjgwMDc3ODc2OCBMIDEuNDg1NjI0MTIwNDIgMC4wODQwNTMzOTI3NTczIEwgLTEuNDg1NjI0MTIwNDIgLTAuMDg0MDUzMzkyNzU3MyIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfZDJmMWJhODgwMGEzNGEyMDgwZDVmNWE0NzYxNjNkZGYuc2V0SWNvbihkaXZfaWNvbl8xNjk5NzdkOWZhMDU0ZTNhYThhZmIxOTBjMjk0ZTRmYik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZmY3OWNlYzU5ZDMwNDBlZDg1YTNhNzA2ZTY3MzhkZmMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDA4NTczMzMzMywtMzguNTA5MTZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fZDQ4M2FmMjE1NmU3NDc3N2EwYjU0MzRiYzY5MTFhYjcgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFs2LjAyMzQyNzYzNTA2LDIwLjUxNjYwODQ0NjJdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMTJweCIgaGVpZ2h0PSIyM3B4IiB2aWV3Qm94PSItNi4wMjM0Mjc2MzUwNiAtMjAuNTE2NjA4NDQ2MiAxMi4wIDIzLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gLTEuNDg3OTU5MjI3ODcgMC4wMTEwMTUyNzA5NDYyIEwgLTEuNTIyNDAyMTMzODggLTQuNjQxNTgzODQxNjUgTCAtNC40ODczMDUzMTg2NyAtMy4xMzE1OTQwNzE4OSBMIC0wLjEzMzU4MDM0NDUyMyAtMTguMDQ0MjMyMTYzNCBMIDQuNDQwNDUwMDQ4NTUgLTMuMTk3Njg1Njk3NTYgTCAxLjQ1MzUxNjMyMTg2IC00LjY2MzYxNDM4MzU0IEwgMS40ODc5NTkyMjc4NyAtMC4wMTEwMTUyNzA5NDYyIEwgLTEuNDg3OTU5MjI3ODcgMC4wMTEwMTUyNzA5NDYyIiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl9mZjc5Y2VjNTlkMzA0MGVkODVhM2E3MDZlNjczOGRmYy5zZXRJY29uKGRpdl9pY29uX2Q0ODNhZjIxNTZlNzQ3NzdhMGI1NDM0YmM2OTExYWI3KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iMGI3MDJiNDZiZWU0ZTZlYjc2YjY0ZDI2NjgzMzMzNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMDc3MywtMzguNTA5MTUxNjY2N10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl9mZDcyZGE0NGIwMGM0YjlkOTc3MGQ4MDYzMzgwZjVlYSA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzYuMTIzMjQwNzI3NjIsMjIuMzA3MjYwNzg1M10sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjI1cHgiIHZpZXdCb3g9Ii02LjEyMzI0MDcyNzYyIC0yMi4zMDcyNjA3ODUzIDEyLjAgMjUuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAtMS40ODc1MDUyMzE2NyAwLjAzODM2OTA3MjkwNDEgTCAtMS42NDkxMTUwMzIxOSAtNi4yMjY5NzQ0ODU2NSBMIC00LjU4NTc1NjQyMjYzIC00LjY2MjczMTEwODE3IEwgLTAuNTA2OTMxNDU2NjYgLTE5LjY1Mjg5MDY0MzYgTCA0LjMzOTI3NDk2NzM5IC00Ljg5Mjk0NTU0NTYgTCAxLjMyNTg5NTQzMTE1IC02LjMwMzcxMjYzMTQ2IEwgMS40ODc1MDUyMzE2NyAtMC4wMzgzNjkwNzI5MDQxIEwgLTEuNDg3NTA1MjMxNjcgMC4wMzgzNjkwNzI5MDQxIiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl9iMGI3MDJiNDZiZWU0ZTZlYjc2YjY0ZDI2NjgzMzMzNS5zZXRJY29uKGRpdl9pY29uX2ZkNzJkYTQ0YjAwYzRiOWQ5NzcwZDgwNjMzODBmNWVhKTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xODkyOTdlNWRmM2Y0NTI0YmJkNmNiOWU1MzQ2NGE0NSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMDY4OTY2NjY3LC0zOC41MDkxNzY2NjY3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgdmFyIGRpdl9pY29uXzBlMTQ1MzU0YmZiYTRlMGNiYjYwMDFjNmRiMjkwNzllID0gTC5kaXZJY29uKHsKICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzE0LDE0XSwKICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbNS45OTY1ODUxMTc5NSwyNi45MDY4MTgyNjMyXSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjEycHgiIGhlaWdodD0iMzBweCIgdmlld0JveD0iLTUuOTk2NTg1MTE3OTUgLTI2LjkwNjgxODI2MzIgMTIuMCAzMC4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIC0xLjQ4Nzk5OTg5MTMgLTAuMDAwNTY4NzUxNTk1NTgxIEwgLTEuNDg0MDE2MjU3NjUgLTEwLjQyMjc3NTAwNzkgTCAtNC40NjA1ODQ3OTE4NiAtOC45MzU5MTI2MTk3OCBMIDAuMDA5MTAyMzk4MDA5OTMgLTIzLjgxNDIwNTI3OCBMIDQuNDY3NDE0NTU1OTcgLTguOTMyNTAwMTEwMjEgTCAxLjQ5MTk4MzUyNDk1IC0xMC40MjE2Mzc1MDQ3IEwgMS40ODc5OTk4OTEzIDAuMDAwNTY4NzUxNTk1NTgxIEwgLTEuNDg3OTk5ODkxMyAtMC4wMDA1Njg3NTE1OTU1ODEiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyXzE4OTI5N2U1ZGYzZjQ1MjRiYmQ2Y2I5ZTUzNDY0YTQ1LnNldEljb24oZGl2X2ljb25fMGUxNDUzNTRiZmJhNGUwY2JiNjAwMWM2ZGIyOTA3OWUpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzdlZDVhMTJmMmZjYzQyMzg4YWM0ODE3MGQ5MzA4MWYwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwNjA2NSwtMzguNTA5MTRdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fZDdlMWU3NzcxNzYyNDViYjg2YmMxNjUzYWQwNGMzYWUgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFs1LjIzMjIwODE4NzUyLDI2LjgyNjM0MTUyMDZdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMTJweCIgaGVpZ2h0PSIzMHB4IiB2aWV3Qm94PSItNS4yMzIyMDgxODc1MiAtMjYuODI2MzQxNTIwNiAxMi4wIDMwLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gLTEuNDgyNTU5NzUzOTEgLTAuMTI3MTI0MjU0NTY3IEwgLTAuNTg3NjQzNjg2ODU1IC0xMC41NjM4OTM3NjUyIEwgLTMuNjc5ODg3NDQ5MjMgLTkuMzM1NTgyNTIwNDggTCAyLjAzOTAzNDM1ODE1IC0yMy43Nzk4MDcyOTU4IEwgNS4yMTU0NzEwNzQyIC04LjU3MjgzNjk5MzA3IEwgMi4zNzc0NzU4MjA5NiAtMTAuMzA5NjQ1MjU2MSBMIDEuNDgyNTU5NzUzOTEgMC4xMjcxMjQyNTQ1NjcgTCAtMS40ODI1NTk3NTM5MSAtMC4xMjcxMjQyNTQ1NjciIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyXzdlZDVhMTJmMmZjYzQyMzg4YWM0ODE3MGQ5MzA4MWYwLnNldEljb24oZGl2X2ljb25fZDdlMWU3NzcxNzYyNDViYjg2YmMxNjUzYWQwNGMzYWUpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzY4NzE2YzhlOTY3NTRjNzNiMzE4M2QxMjNmZGZiZmJiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwNTMzLC0zOC41MDg5NzVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fMDRmMGZlYTJhOTYyNDY3OGE5NmFmOGE3MDM2YzU2YzMgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFszLjAzNjQwNDkzNDgyLDIyLjc0NjYwNjE1OTldLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMTJweCIgaGVpZ2h0PSIyNnB4IiB2aWV3Qm94PSItMy4wMzY0MDQ5MzQ4MiAtMjIuNzQ2NjA2MTU5OSAxMi4wIDI2LjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gLTEuMzg4MzYzNDg4MDQgLTAuNTM1MzQxNzgzNDE2IEwgMS41MTY0MDk2NzU1MyAtOC4wNjg2MjQ0OTQxNiBMIC0xLjc5NTY1OTA4Mzk3IC03Ljc1MDk0NDU3Mjk1IEwgNy43MjI4NDkyMTQzMiAtMjAuMDI4NTU0MTAzMSBMIDYuNTM0NTIxODQ0MjggLTQuNTM4ODkzODcyNDUgTCA0LjI5MzEzNjY1MTYyIC02Ljk5Nzk0MDkyNzMzIEwgMS4zODgzNjM0ODgwNCAwLjUzNTM0MTc4MzQxNiBMIC0xLjM4ODM2MzQ4ODA0IC0wLjUzNTM0MTc4MzQxNiIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfNjg3MTZjOGU5Njc1NGM3M2IzMTgzZDEyM2ZkZmJmYmIuc2V0SWNvbihkaXZfaWNvbl8wNGYwZmVhMmE5NjI0Njc4YTk2YWY4YTcwMzZjNTZjMyk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNGVhYTM3NzA1OWQ1NDQ0Y2JlMTU1NzQ3YmU3YmE3ZmQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDA0NjEzMzMzMywtMzguNTA4NTddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fZjZlNTcwYjY3NThmNDAwMDg4NWQ5OWRmNGQ5YmFkOGIgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFszLjMyODMxMDMzNzEzLDE4Ljc1NjAzNzQwMTFdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMThweCIgaGVpZ2h0PSIyMnB4IiB2aWV3Qm94PSItMy4zMjgzMTAzMzcxMyAtMTguNzU2MDM3NDAxMSAxOC4wIDIyLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gLTEuMTgyOTE0MTMzMzggLTAuOTAyNjk0OTM5MDg0IEwgMy4yMTkxMjQ4NzM5OCAtNi42NzEyMzc0Nzk5MiBMIC0wLjA0OTM5ODMzMTg2OSAtNy4yOTM3MTMyMjQ3IEwgMTIuNTI2MjkzNDU5MSAtMTYuNDE0NzY5NzQxMyBMIDcuMDQ4MDg2NDY4NDIgLTEuODc3NTQzNTkwMiBMIDUuNTg0OTUzMTQwNzQgLTQuODY1ODQ3NjAxNzUgTCAxLjE4MjkxNDEzMzM4IDAuOTAyNjk0OTM5MDg0IEwgLTEuMTgyOTE0MTMzMzggLTAuOTAyNjk0OTM5MDg0IiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl80ZWFhMzc3MDU5ZDU0NDRjYmUxNTU3NDdiZTdiYTdmZC5zZXRJY29uKGRpdl9pY29uX2Y2ZTU3MGI2NzU4ZjQwMDA4ODVkOTlkZjRkOWJhZDhiKTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xMjFhMDQyM2FlMTE0NGJiYjRjNmU5YTM0YWYyYTJiNiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMDQwMDE2NjY3LC0zOC41MDc5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl9jYjA0MTRiNDhkN2I0MWVkYTM3YTMxNWEwMDMzOWFjMSA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzMuMTEyODY2MDY0NTMsMTcuNjkxMTU3MTY4M10sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyMHB4IiBoZWlnaHQ9IjIxcHgiIHZpZXdCb3g9Ii0zLjExMjg2NjA2NDUzIC0xNy42OTExNTcxNjgzIDIwLjAgMjEuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAtMS4wNzE3NTM0MjA1NiAtMS4wMzIyMjUwNzUwMyBMIDQuNDg0MjQyMTk1NjUgLTYuODAwOTgzNzAxNzEgTCAxLjMwODUxMDI3OTUxIC03Ljc5MzY4MDQzMTIyIEwgMTQuODQ2MDIxMjkxNSAtMTUuNDE0NTM5NDExNyBMIDcuNzM5MDMwODAyODQgLTEuNjAwMzI5OTgxMDIgTCA2LjYyNzc0OTAzNjc2IC00LjczNjUzMzU1MTY0IEwgMS4wNzE3NTM0MjA1NiAxLjAzMjIyNTA3NTAzIEwgLTEuMDcxNzUzNDIwNTYgLTEuMDMyMjI1MDc1MDMiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyXzEyMWEwNDIzYWUxMTQ0YmJiNGM2ZTlhMzRhZjJhMmI2LnNldEljb24oZGl2X2ljb25fY2IwNDE0YjQ4ZDdiNDFlZGEzN2EzMTVhMDAzMzlhYzEpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzY5MDEzMDdkNjQzODRkYzZhYTZjMjQ4NDZmYjJmYWFjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwMzQ0NSwtMzguNTA3MzU2NjY2N10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl8zMTYwNTZiNjAxYTY0MzY5YmVjYmYzYTRlZTQ3MTlhNyA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzMuOTA5NTg1ODM5OTcsMTQuMTAwMzU4NTg4OF0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIxN3B4IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9Ii0zLjkwOTU4NTgzOTk3IC0xNC4xMDAzNTg1ODg4IDE3LjAgMTguMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAtMS4wODUxNTcwNDg5MSAtMS4wMTgxMjQ4MzQ3OSBMIDEuMDYwNDkzMzQ1MzQgLTMuMzA1MDQyNDgwMSBMIC0yLjEyNzk0NTU4NzI2IC00LjI1NjEzNTEwMDc3IEwgMTEuMzA4NzczOTA3MyAtMTIuMDUzMzMxMDg1NSBMIDQuMzgyOTk2NzA2MTggMS44NTI2MTM5MDc5NSBMIDMuMjMwODA3NDQzMTYgLTEuMjY4NzkyODEwNTMgTCAxLjA4NTE1NzA0ODkxIDEuMDE4MTI0ODM0NzkgTCAtMS4wODUxNTcwNDg5MSAtMS4wMTgxMjQ4MzQ3OSIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfNjkwMTMwN2Q2NDM4NGRjNmFhNmMyNDg0NmZiMmZhYWMuc2V0SWNvbihkaXZfaWNvbl8zMTYwNTZiNjAxYTY0MzY5YmVjYmYzYTRlZTQ3MTlhNyk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfY2UyOTJmY2E5MzZhNDAzMmI2MDNjODQ4Mzg0MDI2MTggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDAyODYsLTM4LjUwNjg1MTY2NjddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fNDZmZjU4MWY2OWU1NGQ3YjhlYTQyYTBmNGExZWQ4YzQgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFs0LjEyMDkxNDMyMTE2LDEzLjgzODQxMjc2OF0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9Ii00LjEyMDkxNDMyMTE2IC0xMy44Mzg0MTI3NjggMTguMCAxOC4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIC0xLjA0OTUwMTkxNzM3IC0xLjA1NDg0MTA5MDEzIEwgMS4xODQ0NzIyNzcgLTMuMjc3NTA3ODIzODIgTCAtMS45NjkzNzI2NDc4NyAtNC4zMzc2ODgwODY3MSBMIDExLjcyNzU0NDAwNTYgLTExLjY2ODE4Mzk5MDEgTCA0LjMyNzYzODg1NjM3IDEuOTkxMzU4NDU0MDggTCAzLjI4MzQ3NjExMTc1IC0xLjE2NzgyNTY0MzU2IEwgMS4wNDk1MDE5MTczNyAxLjA1NDg0MTA5MDEzIEwgLTEuMDQ5NTAxOTE3MzcgLTEuMDU0ODQxMDkwMTMiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyX2NlMjkyZmNhOTM2YTQwMzJiNjAzYzg0ODM4NDAyNjE4LnNldEljb24oZGl2X2ljb25fNDZmZjU4MWY2OWU1NGQ3YjhlYTQyYTBmNGExZWQ4YzQpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzIzNGE5M2YwYzkxNjRkODViMzBmNzlmN2UwNGNhYTY3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwMjI1LC0zOC41MDYxOTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fMjdhMThlODY0NzFhNDc0Nzg4MTc2ODJiZjkyYTJhYjcgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFszLjI2NzU0MzA5MjcxLDE2Ljg1ODg1MTQzNjNdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjBweCIgaGVpZ2h0PSIyMHB4IiB2aWV3Qm94PSItMy4yNjc1NDMwOTI3MSAtMTYuODU4ODUxNDM2MyAyMC4wIDIwLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gLTEuMDYwNjEzNTI3OCAtMS4wNDM2NjgwMjQxNiBMIDQuMDcxOTAxNTk3MTQgLTYuMjU5NTE3MTcwNzUgTCAwLjkwNzAwNjUxNzM4NyAtNy4yODYyMzk2OTEyNyBMIDE0LjUyNTUyNzM0MjQgLTE0Ljc2MTM3MDg5NjggTCA3LjI3MDY4NzY4NDE3IC0xLjAyNDIzMTU0NjMyIEwgNi4xOTMxMjg2NTI3NCAtNC4xNzIxODExMjI0MyBMIDEuMDYwNjEzNTI3OCAxLjA0MzY2ODAyNDE2IEwgLTEuMDYwNjEzNTI3OCAtMS4wNDM2NjgwMjQxNiIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfMjM0YTkzZjBjOTE2NGQ4NWIzMGY3OWY3ZTA0Y2FhNjcuc2V0SWNvbihkaXZfaWNvbl8yN2ExOGU4NjQ3MWE0NzQ3ODgxNzY4MmJmOTJhMmFiNyk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYWZlYTBiNTYwM2QzNDk3MzhhMWVhYTdhN2IzNDVhYjYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDAxNjMsLTM4LjUwNTU5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgdmFyIGRpdl9pY29uXzBmYmFhOTIyMTBhYjQyOTM5YTQwNDAwN2Q5ZGQ1MjUyID0gTC5kaXZJY29uKHsKICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzE0LDE0XSwKICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMi45NjM1MDk2MDM0NCw5LjIwNjUzODQ2NjcxXSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjIwcHgiIGhlaWdodD0iMTRweCIgdmlld0JveD0iLTIuOTYzNTA5NjAzNDQgLTkuMjA2NTM4NDY2NzEgMjAuMCAxNC4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIC0wLjY4MTE2Njc2Nzc3NiAtMS4zMjI5MzQ1NTQxMiBMIDIuMTY2NTY5ODA2MDcgLTIuNzg5MjA3NzgwOSBMIC0wLjUxODY5ODI4MzYwMSAtNC43NTM5MTAxMjEzNSBMIDE0Ljc1NDE0NzU2MDkgLTcuNTk2Nzc0MTM2NzYgTCAzLjU2ODMwMjMyMzA1IDMuMTgzNjk3MjAzMzUgTCAzLjUyODkwMzM0MTYyIC0wLjE0MzMzODY3MjY2MSBMIDAuNjgxMTY2NzY3Nzc2IDEuMzIyOTM0NTU0MTIgTCAtMC42ODExNjY3Njc3NzYgLTEuMzIyOTM0NTU0MTIiIGZpbGwtb3BhY2l0eT0iMC44IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLW9wYWNpdHk9IjAuOCIgZmlsbD0iIzAwQkZGRiIgLz48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgbWFya2VyX2FmZWEwYjU2MDNkMzQ5NzM4YTFlYWE3YTdiMzQ1YWI2LnNldEljb24oZGl2X2ljb25fMGZiYWE5MjIxMGFiNDI5MzlhNDA0MDA3ZDlkZDUyNTIpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2QzYmRlZDE4YTk1YjRhNWZiZmMxMTkxNDQ4OTE2NTRmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTEzLjAwMTY1NSwtMzguNTA0ODFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF83YTUwZWUwMWQyNDc0MmUzODI0NjhmNDI0NTA5ZjNjNik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZGl2X2ljb25fMDZmZmY2MTBiOGJiNGUzMTlkNDkyZTgwOWNmN2M0OWQgPSBMLmRpdkljb24oewogICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTQsMTRdLAogICAgICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFsyLjc3MTg2NTkxNTA3LDQuNjUxNzk3Mjk2OTVdLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2VtcHR5JywKICAgICAgICAgICAgICAgICAgICBodG1sOiAnPHN2ZyB3aWR0aD0iMjNweCIgaGVpZ2h0PSIxMXB4IiB2aWV3Qm94PSItMi43NzE4NjU5MTUwNyAtNC42NTE3OTcyOTY5NSAyMy4wIDExLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj4gIDxwYXRoIGQ9Ik0gMC4zNjE3MzcxNTc0NzMgLTEuNDQzMzYwNzQxMDggTCA1LjE4OTQ5NTgxNTA0IC0wLjIzMzQyMDg4MDU2MiBMIDQuNDY5NjA5Mzg4OSAtMy40ODE4Nzk1MjAyIEwgMTcuODE4MDA1MzI3MyA0LjQ2NTU3NDI3Nzc4IEwgMi4yOTkxODY0NDQwNiA1LjE3ODI4NDkyNjMgTCA0LjQ2NjAyMTUwMDA5IDIuNjUzMzAwNjAxNjEgTCAtMC4zNjE3MzcxNTc0NzMgMS40NDMzNjA3NDEwOCBMIDAuMzYxNzM3MTU3NDczIC0xLjQ0MzM2MDc0MTA4IiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl9kM2JkZWQxOGE5NWI0YTVmYmZjMTE5MTQ0ODkxNjU0Zi5zZXRJY29uKGRpdl9pY29uXzA2ZmZmNjEwYjhiYjRlMzE5ZDQ5MmU4MDljZjdjNDlkKTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yZWFkNGQ5ODcxYmM0MWJlYTNhZjc2MGRlZTY3YTFhYiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWy0xMy4wMDE5MjUsLTM4LjUwNDA1NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl82MDA2MjA0ZmZlNWU0NTZjYTc1NjM1NTZhYThjNjMwZSA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzMuNjkwNjExMDEyNDUsMy4wNzQxMTk0MTQ1OF0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyOXB4IiBoZWlnaHQ9IjEzcHgiIHZpZXdCb3g9Ii0zLjY5MDYxMTAxMjQ1IC0zLjA3NDExOTQxNDU4IDI5LjAgMTMuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAwLjUxOTM5NzQ3Njk4IC0xLjM5NDQwNjc3NzQyIEwgMTAuMTA3OTExOTMyMyAyLjE3NzE4Mzg3ODAxIEwgOS43NTIzMDAxMDg4NSAtMS4xMzEwMjcxNTM4IEwgMjIuMTM4MTc1NDUyMSA4LjI0NjE2Nzk0ODI1IEwgNi42MzU5MTUyNDY5NyA3LjIzNTQxMzUxMDcgTCA5LjA2OTExNjk3ODM1IDQuOTY1OTk3NDMyODQgTCAtMC41MTkzOTc0NzY5OCAxLjM5NDQwNjc3NzQyIEwgMC41MTkzOTc0NzY5OCAtMS4zOTQ0MDY3Nzc0MiIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfMmVhZDRkOTg3MWJjNDFiZWEzYWY3NjBkZWU2N2ExYWIuc2V0SWNvbihkaXZfaWNvbl82MDA2MjA0ZmZlNWU0NTZjYTc1NjM1NTZhYThjNjMwZSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZGI0YzI0ZmQ0ZDFjNDFiZTkxYjMxM2UxYzk0MmVjODcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDAyMjg4MzMzMywtMzguNTAzMzMxNjY2N10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl9kMTMwYzA4ZDg2M2U0ODEwYWU0NWI3ODg3YWFiYWQ2MyA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzMuOTIyOTc4NzE0NTYsMy42MTU3NDE2OTIwOV0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIyN3B4IiBoZWlnaHQ9IjIzcHgiIHZpZXdCb3g9Ii0zLjkyMjk3ODcxNDU2IC0zLjYxNTc0MTY5MjA5IDI3LjAgMjMuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAwLjk1NzUyNzM3NTk1OSAtMS4xMzg5ODQzMzg5MSBMIDEwLjgxODIzODI3MjYgNy4xNTA3NzAyMzIyIEwgMTEuNTk0MzA4Njg1NiAzLjkxNTI3NDE3ODQxIEwgMjAuMTExNTY5OTQ2OCAxNi45MDc1MDA5NTQ3IEwgNS44NDkxNDQ0Mjk4NCAxMC43NDkxODAyMTE5IEwgOC45MDMxODM1MjA2NyA5LjQyODczODkxMDAzIEwgLTAuOTU3NTI3Mzc1OTU5IDEuMTM4OTg0MzM4OTEgTCAwLjk1NzUyNzM3NTk1OSAtMS4xMzg5ODQzMzg5MSIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfZGI0YzI0ZmQ0ZDFjNDFiZTkxYjMxM2UxYzk0MmVjODcuc2V0SWNvbihkaXZfaWNvbl9kMTMwYzA4ZDg2M2U0ODEwYWU0NWI3ODg3YWFiYWQ2Myk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOWI3Y2I4MmYzY2IwNDQyY2I4NTI5N2YxMDNlYjc3YmYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDAyOTUsLTM4LjUwMjc5NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzdhNTBlZTAxZDI0NzQyZTM4MjQ2OGY0MjQ1MDlmM2M2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBkaXZfaWNvbl82ZDViYmU5ZTQ1OTc0ZDQ3YjRiYjY3NWQ5YjJkMzc2NiA9IEwuZGl2SWNvbih7CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsxNCwxNF0sCiAgICAgICAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzIuOTAzNTY0MzkxOTksMy43MDE0NTQ1Mzg2MV0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1wdHknLAogICAgICAgICAgICAgICAgICAgIGh0bWw6ICc8c3ZnIHdpZHRoPSIxNHB4IiBoZWlnaHQ9IjI4cHgiIHZpZXdCb3g9Ii0yLjkwMzU2NDM5MTk5IC0zLjcwMTQ1NDUzODYxIDE0LjAgMjguMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPiAgPHBhdGggZD0iTSAxLjM1Njc5NDMyODEyIC0wLjYxMDk0NDQ3NDcxNyBMIDUuNDA3OTU5NTk5ODEgOC4zODU5NDE5Njk3MyBMIDcuNTEwNjAzNzgxMzIgNS44MDcyNTg2OTIxOCBMIDkuNTQ5NjY1NTQ0MTUgMjEuMjA4MDM1Mzk3NSBMIC0wLjYzMDE2MjE4NzM4MiA5LjQ3MjkyNTU0MDQ4IEwgMi42OTQzNzA5NDM1NyA5LjYwNzgzMDkxOTE2IEwgLTEuMzU2Nzk0MzI4MTIgMC42MTA5NDQ0NzQ3MTcgTCAxLjM1Njc5NDMyODEyIC0wLjYxMDk0NDQ3NDcxNyIgZmlsbC1vcGFjaXR5PSIwLjgiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2Utb3BhY2l0eT0iMC44IiBmaWxsPSIjMDBCRkZGIiAvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBtYXJrZXJfOWI3Y2I4MmYzY2IwNDQyY2I4NTI5N2YxMDNlYjc3YmYuc2V0SWNvbihkaXZfaWNvbl82ZDViYmU5ZTQ1OTc0ZDQ3YjRiYjY3NWQ5YjJkMzc2Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNTFjZGViMDIxNTIzNDBlYTgyMjk0ZGJkMjRlZTllMDggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFstMTMuMDAzNzcsLTM4LjUwMjY2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfN2E1MGVlMDFkMjQ3NDJlMzgyNDY4ZjQyNDUwOWYzYzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgdmFyIGRpdl9pY29uXzAzMmQ3OGE1YzM5ODRkNDdiMDcyNzkyZjNkZjIzNDBiID0gTC5kaXZJY29uKHsKICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzE0LDE0XSwKICAgICAgICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMy41NjU5ODA1MzQ1NSwzLjIxNjk4MDE0Mjg5XSwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXB0eScsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogJzxzdmcgd2lkdGg9IjExcHgiIGhlaWdodD0iMjhweCIgdmlld0JveD0iLTMuNTY1OTgwNTM0NTUgLTMuMjE2OTgwMTQyODkgMTEuMCAyOC4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSI+ICA8cGF0aCBkPSJNIDEuNDQxMTYwODIwMzggLTAuMzcwNDA0NDk0ODYgTCAzLjc0NTU4NDc4MDY4IDguNTk1NTkyMzMwODMgTCA2LjI1NzUwMTkyNjU4IDYuNDEzNjIyNTIwNzMgTCA1LjYzODA2NDQxNDA1IDIxLjkzNjQ0NDIwOTEgTCAtMi4zODk0NjI5OTU2OCA4LjYzNjA0OTQ4OTg5IEwgMC44NjMyNjMxMzk5MzIgOS4zMzY0MDEzMjA1NSBMIC0xLjQ0MTE2MDgyMDM4IDAuMzcwNDA0NDk0ODYgTCAxLjQ0MTE2MDgyMDM4IC0wLjM3MDQwNDQ5NDg2IiBmaWxsLW9wYWNpdHk9IjAuOCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1vcGFjaXR5PSIwLjgiIGZpbGw9IiMwMEJGRkYiIC8+PC9zdmc+JywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG1hcmtlcl81MWNkZWIwMjE1MjM0MGVhODIyOTRkYmQyNGVlOWUwOC5zZXRJY29uKGRpdl9pY29uXzAzMmQ3OGE1YzM5ODRkNDdiMDcyNzkyZjNkZjIzNDBiKTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAg\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;\"></iframe></div></div>"
      ],
      "text/plain": [
       "<folium.folium.Map at 0x7f8b43e57510>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mapa = folium.Map(location=[lat, lon], tiles=\"Cartodb Positron\",\n",
    "                  zoom_start=zoom_start)\n",
    "\n",
    "\n",
    "icon_size = (14, 14)\n",
    "\n",
    "for feature in gj['features']:\n",
    "    if feature['geometry']['type'] == 'LineString':\n",
    "        continue\n",
    "    elif feature['geometry']['type'] == 'Point':\n",
    "        lon, lat = feature['geometry']['coordinates']\n",
    "        html = feature['properties']['html']\n",
    "        \n",
    "        icon_anchor = (feature['properties']['anchor_x'],\n",
    "                       feature['properties']['anchor_y'])\n",
    "        \n",
    "        icon = folium.features.DivIcon(html=html,\n",
    "                                       icon_size=(14, 14),\n",
    "                                       icon_anchor=icon_anchor)\n",
    "        marker = folium.map.Marker([lat, lon], icon=icon)\n",
    "        mapa.add_children(marker)\n",
    "    else:\n",
    "        msg = \"Unexpected geometry {}\".format\n",
    "        raise ValueError(msg(feature['geometry']))\n",
    "\n",
    "mapa"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
